首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

Android开发 - Fragment与Activity生命周期比较

1.Fragment的生命周期 见下图 2.与Activity生命周期的对比 见下图 3. 代码场景演示实例 切换到该Fragment: AppListFragment(7649): onAttachAppListFragment(7649): onCreateAppListFragment(7649): onCreateViewAppListFragment(7649): onActivityCreatedAppListFragment(7649): onStartAppListFragment(7649): onResume 屏幕灭掉: AppListFragment(7649): onPauseAppListFragment(7649): onSaveInstanceStateAppListFragment(7649): onStop 屏幕解锁 AppListFragment(7649): onStartAppListFragment(7649): onResume 切换到其他Fragment:AppListFragment(7649): onPauseAppListFragment(7649): onStopAppListFragment(7649): onDestroyView 切换回本身的Fragment: AppListFragment(7649): onCreateViewAppListFragment(7649): onActivityCreatedAppListFragment(7649): onStartAppListFragment(7649): onResume 回到桌面 AppListFragment(7649): onPauseAppListFragment(7649): onSaveInstanceStateAppListFragment(7649): onStop 回到应用 D/AppListFragment(7649): onStartAppListFragment(7649): onResume 退出应用 AppListFragment(7649): onPauseAppListFragment(7649): onStopAppListFragment(7649): onDestroyViewAppListFragment(7649): onDestroyAppListFragment(7649): onDetach

优秀的个人博客,低调大师

iOS开发--3D Touch的基本使用

1.桌面快捷菜单项 效果如图: 1.桌面快捷菜单项 效果如图: 1.桌面快捷菜单项 效果如图: 桌面快捷菜单 点击之后的效果如图: 点击桌面快捷菜单的效果 接下来看下具体实现:1).在-application:didFinishLaunchingWithOptions:方法中用-setShortcutItems:方法来添加快捷菜单项。 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { //3D Touch按压程序图标的快捷项 //快捷菜单的图标 UIApplicationShortcutIcon *icon1=[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeCaptureVideo]; UIApplicationShortcutIcon *icon2=[UIApplicationShortcutIcon iconWithType:UIApplicationShortcutIconTypeAdd]; UIApplicationShortcutIcon *icon3=[UIApplicationShortcutIcon iconWithTemplateImageName:@"search"]; //快捷菜单 UIApplicationShortcutItem *item1=[[UIApplicationShortcutItem alloc]initWithType:@"1" localizedTitle:@"嘿嘿" localizedSubtitle:nil icon:icon1 userInfo:nil]; UIApplicationShortcutItem *item2=[[UIApplicationShortcutItem alloc]initWithType:@"1" localizedTitle:@"呵呵" localizedSubtitle:@"干嘛去洗澡" icon:icon2 userInfo:nil]; UIApplicationShortcutItem *item3=[[UIApplicationShortcutItem alloc]initWithType:@"1" localizedTitle:@"搜索" localizedSubtitle:nil icon:icon3 userInfo:nil]; //设置app的快捷菜单 [[UIApplication sharedApplication] setShortcutItems:@[item1,item2,item3]]; //导航 self.window.rootViewController=[[UINavigationController alloc]initWithRootViewController:[ViewController new]]; return YES;} 2).在-application:performActionForShortcutItem:completionHandler:方法中实现点击快捷菜单的方法: //3D Touch按压程序图标的快捷项时触发的方法-(void)application:(UIApplication )application performActionForShortcutItem:(UIApplicationShortcutItem )shortcutItem completionHandler:(void (^)(BOOL))completionHandler{ NSString title; if([shortcutItem.localizedTitle isEqualToString:@"嘿嘿"]) { title=@"嘿嘿"; } else if([shortcutItem.localizedTitle isEqualToString:@"呵呵"]) { title=@"呵呵"; } else if([shortcutItem.localizedTitle isEqualToString:@"搜索"]) { title=@"搜索"; } //这里就弹个框子意思一下 //由于UIAlertView在iOS 9被废弃,因此选用UIAlertController UIAlertController alertController=[UIAlertController alertControllerWithTitle:@"提示" message:[NSString stringWithFormat:@"你点击了“%@”",title] preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction action=[UIAlertAction actionWithTitle:@"知道了" style:UIAlertActionStyleDefault handler:^(UIAlertAction action) { [alertController dismissViewControllerAnimated:YES completion:nil]; }]; [alertController addAction:action]; [self.window.rootViewController presentViewController:alertController animated:YES completion:nil];} 2.程序内的3DTouch按压操作: 表视图 3DTouch按压的时候生成的预览 peek时上拉出现的菜单 1).首先,实现3DTouch的视图控制器要遵守:UIViewControllerPreviewingDelegate协议,它有2个required级别的协议方法:-previewingContext:viewControllerForLocation:以及-previewingContext:commitViewController: 2).检测3DTouch是否可用,并注册3DTouch: 检测3D Touch是否可用 -(BOOL)is3DTouchAvailiable{ if(self.traitCollection.forceTouchCapability==UIForceTouchCapabilityAvailable) return YES; return NO;} 注册3DTouch if([self is3DTouchAvailiable]) { [self registerForPreviewingWithDelegate:self sourceView:self.view]; } 3).实现协议方法: -(UIViewController *)previewingContext:(id<UIViewControllerPreviewing>)previewingContext viewControllerForLocation:(CGPoint)location{ NSIndexPath *indexPath=[_tbVew indexPathForRowAtPoint:CGPointMake(location.x, location.y-64)]; if(indexPath) { DetailViewController *detail=[[DetailViewController alloc]init]; detail.title=_dataArray[indexPath.row]; //detail.preferredContentSize=CGSizeMake(300, 300); __weak typeof(self) wkSelf=self; //------------上拉时的菜单------------------- //置顶及其点击逻辑 UIPreviewAction *topAction=[UIPreviewAction actionWithTitle:@"置顶" style:UIPreviewActionStyleDefault handler:^(UIPreviewAction * action, UIViewController * previewViewController) { [wkSelf.dataArray exchangeObjectAtIndex:indexPath.row withObjectAtIndex:0]; [wkSelf.tbVew reloadData]; [wkSelf showAlert:@"提示" body:@"已置顶"]; }]; //删除及其点击逻辑 UIPreviewAction *deleteAction=[UIPreviewAction actionWithTitle:@"删除" style:UIPreviewActionStyleDestructive handler:^(UIPreviewAction *action, UIViewController * previewViewController) { [wkSelf.dataArray removeObjectAtIndex:indexPath.row]; [wkSelf.tbVew reloadData]; [wkSelf showAlert:@"警告" body:@"已删除"]; }]; //传递上拉菜单项给detail detail.actions=@[topAction,deleteAction]; return detail; } return nil;}-(void)previewingContext:(id<UIViewControllerPreviewing>)previewingContext commitViewController:(UIViewController *)viewControllerToCommit{ [self showViewController:viewControllerToCommit sender:self];} 4).要previewing的视图控制器必须实现:-(NSArray<id<UIPreviewActionItem>> *)previewActionItems方法,该方法定义了peek时上拉出来的菜单: /**peek时上拉出来的菜单*/-(NSArray<id<UIPreviewActionItem>> *)previewActionItems{ return self.actions;}

优秀的个人博客,低调大师

iOS开发技巧 - 使用和定制开关控件(UISwitch)

1. 初始化加载到视图界面 (Swift) import UIKit class ViewController: UIViewController { // 1. create a property of type UISwitch var mainSwitch:UISwitch! override func viewDidLoad() { super.viewDidLoad() // 2. create switch mainSwitch = UISwitch(frame: CGRect(x: 100, y: 100, width: 0, height: 0)) view.addSubview(mainSwitch) } } (Objective-C) #import "ViewController.h" @interface ViewController () // 1. create a property of type UISwitch @property (nonatomic, strong) UISwitch *mainSwitch; @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; // 2. create switch self.mainSwitch = [[UISwitch alloc] initWithFrame: CGRectMake(100, 100, 0, 0)]; [self.view addSubview:self.mainSwitch]; } @end 2. 设置开关状态 (Swift) mainSwitch.setOn(true, animated: true) (Objective-C) [self.mainSwitch setOn:YES]; 3. 判断开关状态 (Swift) if mainSwitch.on{ /* Switch is on */ } else { /* Switch is off */ } (Objective-C) if ([self.mainSwitch isOn]){ NSLog(@"The switch is on."); } else { NSLog(@"The switch is off."); } 4. 添加事件监听 (Swift) mainSwitch.addTarget(self, action: "switchIsChanged:", forControlEvents: .ValueChanged) func switchIsChanged(sender: UISwitch) { println("Sender is = \(sender)") if sender.on{ println("The switch is turned on") } else { println("The switch is turned off") } } (Objective-C) [self.mainSwitch addTarget:self action:@selector(switchIsChanged:) forControlEvents:UIControlEventValueChanged]; - (void) switchIsChanged:(UISwitch *)paramSender { NSLog(@"Sender is = %@", paramSender); if ([paramSender isOn]){ NSLog(@"The switch is turned on."); } else { NSLog(@"The switch is turned off."); } } 5. 定制开关UI /* Adjust the off-mode tint color */ mainSwitch.tintColor = UIColor.redColor() /* Adjust the on-mode tint color */ mainSwitch.onTintColor = UIColor.brownColor() /* Also change the knob's tint color */ mainSwitch.thumbTintColor = UIColor.greenColor()

优秀的个人博客,低调大师

GMap.Net开发之自定义Marker

using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using GMap.NET; using GMap.NET.WindowsForms; using GMap.NET.MapProviders; using GMap.NET.WindowsForms.Markers; namespace GMapWinFormDemo { public partial class MainForm : Form { private GMapOverlay objects = new GMapOverlay("objects"); //放置marker的图层 private GMapMarkerImage currentMarker; private bool isLeftButtonDown = false; private Timer blinkTimer = new Timer(); public MainForm() { InitializeComponent(); try { System.Net.IPHostEntry e = System.Net.Dns.GetHostEntry("ditu.google.cn"); } catch { mapControl.Manager.Mode = AccessMode.CacheOnly; MessageBox.Show("No internet connection avaible, going to CacheOnly mode.", "GMap.NET Demo", MessageBoxButtons.OK, MessageBoxIcon.Warning); } mapControl.CacheLocation = Environment.CurrentDirectory + "\\GMapCache\\"; //缓存位置 mapControl.MapProvider = GMapProviders.GoogleChinaMap; //google china 地图 mapControl.MinZoom = 2; //最小比例 mapControl.MaxZoom = 17; //最大比例 mapControl.Zoom = 5; //当前比例 mapControl.ShowCenter = false; //不显示中心十字点 mapControl.DragButton = System.Windows.Forms.MouseButtons.Left; //左键拖拽地图 mapControl.Position = new PointLatLng(32.064,118.704); //地图中心位置:南京 mapControl.OnMapZoomChanged += new MapZoomChanged(mapControl_OnMapZoomChanged); mapControl.MouseClick += new MouseEventHandler(mapControl_MouseClick); mapControl.MouseDown += new MouseEventHandler(mapControl_MouseDown); mapControl.MouseUp += new MouseEventHandler(mapControl_MouseUp); mapControl.MouseMove += new MouseEventHandler(mapControl_MouseMove); mapControl.OnMarkerClick += new MarkerClick(mapControl_OnMarkerClick); mapControl.OnMarkerEnter += new MarkerEnter(mapControl_OnMarkerEnter); mapControl.OnMarkerLeave += new MarkerLeave(mapControl_OnMarkerLeave); mapControl.Overlays.Add(objects); } void mapControl_MouseMove(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left && isLeftButtonDown) { if (currentMarker != null) { PointLatLng point = mapControl.FromLocalToLatLng(e.X, e.Y); currentMarker.Position = point; currentMarker.ToolTipText = string.Format("{0},{1}", point.Lat, point.Lng); } } } void mapControl_MouseUp(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { isLeftButtonDown = false; } } void mapControl_MouseDown(object sender, MouseEventArgs e) { if (e.Button == System.Windows.Forms.MouseButtons.Left) { isLeftButtonDown = true; } } void mapControl_OnMarkerLeave(GMapMarker item) { if (item is GMapMarkerImage) { currentMarker = null; GMapMarkerImage m = item as GMapMarkerImage; m.Pen.Dispose(); m.Pen = null; } } void mapControl_OnMarkerEnter(GMapMarker item) { if (item is GMapMarkerImage) { currentMarker = item as GMapMarkerImage; currentMarker.Pen = new Pen(Brushes.Red, 2); } } void mapControl_OnMarkerClick(GMapMarker item, MouseEventArgs e) { } void mapControl_MouseClick(object sender, MouseEventArgs e) { if(e.Button == System.Windows.Forms.MouseButtons.Right) { //objects.Markers.Clear(); PointLatLng point = mapControl.FromLocalToLatLng(e.X,e.Y); //GMapMarker marker = new GMarkerGoogle(point, GMarkerGoogleType.green); Bitmap bitmap = Bitmap.FromFile("F:\\Projects\\GMapDemo\\GMapDemo\\Image\\A.png") as Bitmap; //GMapMarker marker = new GMarkerGoogle(point, bitmap); GMapMarker marker = new GMapMarkerImage(point, bitmap); marker.ToolTipMode = MarkerTooltipMode.OnMouseOver; marker.ToolTipText = string.Format("{0},{1}", point.Lat, point.Lng); objects.Markers.Add(marker); } } void mapControl_OnMapZoomChanged() { } private void buttonBeginBlink_Click(object sender, EventArgs e) { blinkTimer.Interval = 1000; blinkTimer.Tick += new EventHandler(blinkTimer_Tick); blinkTimer.Start(); } void blinkTimer_Tick(object sender, EventArgs e) { foreach (GMapMarker m in objects.Markers) { if (m is GMapMarkerImage) { GMapMarkerImage marker = m as GMapMarkerImage; if (marker.OutPen == null) marker.OutPen = new Pen(Brushes.Red, 2); else { marker.OutPen.Dispose(); marker.OutPen = null; } } } mapControl.Refresh(); } private void buttonStopBlink_Click(object sender, EventArgs e) { blinkTimer.Stop(); foreach (GMapMarker m in objects.Markers) { if (m is GMapMarkerImage) { GMapMarkerImage marker = m as GMapMarkerImage; marker.OutPen.Dispose(); marker.OutPen = null; } } mapControl.Refresh(); } } } 作者: 阿凡卢 出处: http://www.cnblogs.com/luxiaoxun/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。http://www.cnblogs.com/luxiaoxun/p/3475355.html

优秀的个人博客,低调大师

Spark工程开发常用函数与方法(Scala语言)

import org.apache.spark.{SparkContext, SparkConf}import org.apache.spark.sql.{SaveMode, DataFrame}import scala.collection.mutable.ArrayBufferimport main.asiainfo.coc.tools.Configureimport org.apache.spark.sql.hive.HiveContextimport java.sql.DriverManagerimport java.sql.Connection 1 连接前台数据源 查询前台MYSQL中的数据 val DIM_COC_INDEX_INFO_DDL = s""" CREATE TEMPORARY TABLE DIM_COC_INDEX_INFO USING org.apache.spark.sql.jdbc OPTIONS ( url '${mySQLUrl}', dbtable 'DIM_COC_INDEX_INFO' )""".stripMargin sqlContext.sql(DIM_COC_INDEX_INFO_DDL) val DIM_COC_INDEX_INFO = sql("SELECT * FROM DIM_COC_INDEX_INFO").cache() 2 在A表中筛选出 B表中获取的TARGET_TABLE_CODE 然后再按照DATA_SRC_CODE排序,查询出源表的集合 val sources = DIM_COC_INDEX_INFO.filter("TARGET_TABLE_CODE ='"+TARGET_TABLE_CODE+"'") .select("DATA_SRC_CODE").groupBy("DATA_SRC_CODE").agg(DIM_COC_INDEX_INFO("DATA_SRC_CODE")).collect 3将表进行关联 resultIndexTableDF = resultIndexTableDF.join(SOURCE_TABLE,ALL_USERS.col(ALL_USER_JOIN_COLUMN_NAME) === SOURCE_TABLE.col(SOURCE_TABLE_JOIN_COLUMN_NAME),"left_outer") resultIndexTableDF.dtypes.foreach(println) 4根据条件筛选 val labels = CI_MDA_SYS_TABLE.join(CI_MDA_SYS_TABLE_COLUMN,CI_MDA_SYS_TABLE("TABLE_ID") === CI_MDA_SYS_TABLE_COLUMN("TABLE_ID"),"inner") .join(CI_LABEL_EXT_INFO,CI_MDA_SYS_TABLE_COLUMN("COLUMN_ID") === CI_LABEL_EXT_INFO("COLUMN_ID"),"inner") .join(CI_LABEL_INFO,CI_LABEL_EXT_INFO("LABEL_ID") === CI_LABEL_INFO("LABEL_ID"),"inner") .join(CI_APPROVE_STATUS,CI_LABEL_INFO("LABEL_ID") === CI_APPROVE_STATUS("RESOURCE_ID"),"inner") .filter(CI_APPROVE_STATUS("CURR_APPROVE_STATUS_ID") === CI_APPROVE_STATUS_SUCCESS_CODE and (CI_LABEL_INFO("DATA_STATUS_ID") === 1 || CI_LABEL_INFO("DATA_STATUS_ID") === 2) and (CI_LABEL_EXT_INFO("COUNT_RULES_CODE") isNotNull //TODO trim.length>0 ) and CI_MDA_SYS_TABLE("UPDATE_CYCLE") === TABLE_DATA_CYCLE ).cache() 5 根据某字段对表进行排序 val labelTargetTables = labels.groupBy("CI_MDA_SYS_TABLE.TABLE_ID","CI_MDA_SYS_TABLE.TABLE_NAME").agg(labels("CI_MDA_SYS_TABLE.TABLE_ID"),labels("CI_MDA_SYS_TABLE.TABLE_NAME")).collect 6 创建parquet格式的表 可使用schema.生成到指定的schema. sqlContext.sql("create table "+labelTargetTableName+" stored as parquet as select * from default."+labelTargetTableNameJson) 7 保存数据格式,可以指定生成的格式 resultLabelTable.saveAsTable(tableName = labelTargetTableName, source="parquet", mode=SaveMode.Overwrite) 8 根据筛选查询出相应数据,由于cache方法并不属于action操作,接下来的操作需要这一步所执行的数据信息,所以这里使用collect方法,再执行遍历方法 val r0000Labels = labelInThisTargetTable.filter("COUNT_RULES_CODE = 'R_00000'").select("CI_LABEL_INFO.LABEL_ID","COLUMN_NAME").collect for(r0000Label <- r0000Labels){ ........ }

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册