首页 文章 精选 留言 我的

精选列表

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

android开发—Fragment中onCreateView()和onActivityCreated()的区别

在编写Fragment时,在onCreateView()方法中启动了一个初始化自定义View的方法 initView(),但是调试时就崩溃,打印日志发现是这里出了问题,就将这个方法放到了onActivityCreated()方法中启动,就没有再崩溃过,不明白为什么,查询API和资料后总结如下:书上的讲解是:onCreateView():每次创建、绘制该Fragment的View组件时回调该方法,Fragment将会显示该方法返回的View组件。onActivityCreated():当Fragment所在的Activity被启动完成后回调该方法。 API: 而上文出现的问题是这样的: ①静态的view不需要onActivityCreated ②保存view的状态的时候需要用onActivityCreated ③访问父activity的view层的时候需要在onActivityCreated 方法里面做 即如果view是静态的,那么没有必要在onActivityCreated 方法去调用,大多数的自定义的view,初始化时都需要一个context,而activity是context的子类,所以在onCreateView方法的时候非静态的view初始化调用可能出现异常,所以对于非静态的view,最好在onActivityCreated方法调用 参考了以下两篇博客:http://blog.csdn.net/u014449046/article/details/48572905http://blog.csdn.net/lxl403853563/article/details/49800231 本文转自 一点点征服 博客园博客,原文链接:http://www.cnblogs.com/ldq2016/p/5591988.html,如需转载请自行联系原作者

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

iOS开发之runtime精准获取电池电量

方法一:通过苹果官方文档里面UIDevice public API来获取,代码如下: [UIDevice currentDevice].batteryMonitoringEnabled = YES; [[NSNotificationCenter defaultCenter] addObserverForName:UIDeviceBatteryLevelDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(NSNotification *notification) { // Level has changed NSLog(@"Battery Level Change"); NSLog(@"电池电量:%.2f", [UIDevice currentDevice].batteryLevel); }];@property(nonatomic,readonly) float batteryLevel NS_AVAILABLE_IOS(3_0); // 0 .. 1.0. -1.0 if UIDeviceBatteryStateUnknown它返回的是0.00-1.00之间的浮点值。 但是经过测试发现,在iOS7 上 它是以0.05为单位的,但是在iOS9下测试,它是以0.01为单位的,虽然也是0.01为单位,但是测试多次也会出现偏差1%左右。也就是说, 这个办法是存在缺陷的, 最起码, 它不精确。 方法二:找到Mac下IOKit.framework,将IOKit.framework里面的IOPowerSources.h和IOPSKeys.h拷贝到你的iOS项目中。另外, 还需要把IOKit也导入到你的工程中去,此方法也会出现偏差,不精确。DEMO 地址:https://github.com/colin1994/batteryLevelTest.git /** *Calculatingtheremainingenergy * *@returnCurrentbatterylevel */-(double)getCurrentBatteryLevel { //ReturnsablobofPowerSourceinformationinanopaqueCFTypeRef.CFTypeRefblob=IOPSCopyPowerSourcesInfo(); //ReturnsaCFArrayofPowerSourcehandles,eachoftypeCFTypeRef.CFArrayRefsources=IOPSCopyPowerSourcesList(blob); CFDictionaryRefpSource=NULL; constvoid*psValue; //Returnsthenumberofvaluescurrentlyinanarray.intnumOfSources=CFArrayGetCount(sources); //ErrorinCFArrayGetCountif(numOfSources==0) { NSLog(@"ErrorinCFArrayGetCount"); return-1.0f; } //Calculatingtheremainingenergyfor(inti=0;i<numOfSources;i++) { //ReturnsaCFDictionarywithreadableinformationaboutthespecificpowersource. pSource=IOPSGetPowerSourceDescription(blob,CFArrayGetValueAtIndex(sources,i)); if(!pSource) { NSLog(@"ErrorinIOPSGetPowerSourceDescription"); return-1.0f; } psValue=(CFStringRef)CFDictionaryGetValue(pSource,CFSTR(kIOPSNameKey)); intcurCapacity=0; intmaxCapacity=0; doublepercent; psValue=CFDictionaryGetValue(pSource,CFSTR(kIOPSCurrentCapacityKey)); CFNumberGetValue((CFNumberRef)psValue,kCFNumberSInt32Type,&curCapacity); psValue=CFDictionaryGetValue(pSource,CFSTR(kIOPSMaxCapacityKey)); CFNumberGetValue((CFNumberRef)psValue,kCFNumberSInt32Type,&maxCapacity); percent=((double)curCapacity/(double)maxCapacity*100.0f); returnpercent; } return-1.0f; } 方法三:通过runtime 获取StatusBar上电池电量控件类私有变量的值,此方法可精准获取iOS6以上电池电量 MRC: -(int)getCurrentBatteryLevel {if([UIApplicationsharedApplication].applicationState==UIApplicationStateActive||[UIApplicationsharedApplication].applicationState==UIApplicationStateInactive){void*result=nil; object_getInstanceVariable([UIApplicationsharedApplication],"_statusBar",&result);idstatus=result;for(idaviewin[statussubviews]){for(idbviewin[aviewsubviews]){intbatteryLevel=0;if([NSStringFromClass([bviewclass])caseInsensitiveCompare:@"UIStatusBarBatteryItemView"]==NSOrderedSame&&[[[UIDevicecurrentDevice]systemVersion]floatValue]>=6.0) { object_getInstanceVariable(bview,"_capacity",&result); batteryLevel=(int)result;NSLog(@"电池电量:%d",batteryLevel);if(batteryLevel>0&&batteryLevel<=100){returnbatteryLevel; }else{return0; } } } }return0; } ARC: -(int)getCurrentBatteryLevel {UIApplication*app=[UIApplicationsharedApplication];if(app.applicationState==UIApplicationStateActive||app.applicationState==UIApplicationStateInactive){ Ivarivar=class_getInstanceVariable([appclass],"_statusBar");idstatus=object_getIvar(app,ivar);for(idaviewin[statussubviews]){intbatteryLevel=0;for(idbviewin[aviewsubviews]){if([NSStringFromClass([bviewclass])caseInsensitiveCompare:@"UIStatusBarBatteryItemView"]==NSOrderedSame&&[[[UIDevicecurrentDevice]systemVersion]floatValue]>=6.0) { Ivarivar=class_getInstanceVariable([bviewclass],"_capacity");if(ivar) { batteryLevel=((int(*)(id,Ivar))object_getIvar)(bview,ivar);//这种方式也可以 /*ptrdiff_toffset=ivar_getOffset(ivar); unsignedchar*stuffBytes=(unsignedchar*)(__bridgevoid*)bview; batteryLevel=*((int*)(stuffBytes+offset));*/ NSLog(@"电池电量:%d",batteryLevel);if(batteryLevel>0&&batteryLevel<=100){returnbatteryLevel; }else{return0; } } } } } }return0; } 本文转自 卓行天下 51CTO博客,原文链接:http://blog.51cto.com/9951038/1831743,如需转载请自行联系原作者

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

iOS开发那些-如何打包iOS应用程序

我们把应用上传到App Store之前需要把编译的二进制文件和资源文件打成压缩包,压缩格式是zip。 首页找到编译到什么地方,这个很重要也不太好找,我们可以看看编译日志,找到其中的Create universal binary HelloWorld…的内容,然后展开内容如下: Create Universal Binary /Users/tonyguan/Library/Developer/Xcode/DerivedData/HelloWorld-fzvtlfsmygaqjleczypphenzabef/Build/Products/Release-iphoneos/HelloWorld.app/HelloWorld normal ”armv7 armv7s” cd ”/Users/tonyguan/Desktop/19.1.4 HelloWorld” setenv PATH ”/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin:/Applications/Xcode.app/Contents/Developer/usr/bin:/usr/bin:/bin:/usr/sbin:/sbin” lipo -create /Users/tonyguan/Library/Developer/Xcode/DerivedData/HelloWorld-fzvtlfsmygaqjleczypphenzabef/Build/Intermediates/HelloWorld.build/Release-iphoneos/HelloWorld.build/Objects-normal/armv7/HelloWorld /Users/tonyguan/Library/Developer/Xcode/DerivedData/HelloWorld-fzvtlfsmygaqjleczypphenzabef/Build/Intermediates/HelloWorld.build/Release-iphoneos/HelloWorld.build/Objects-normal/armv7s/HelloWorld -output /Users/tonyguan/Library/Developer/Xcode/DerivedData/HelloWorld-fzvtlfsmygaqjleczypphenzabef/Build/Products/Release-iphoneos/HelloWorld.app/HelloWorld 在最后日志-output之后就是应用编译之后的位置了,其中“/Users/tonyguan/Library/… /Products/Release-iphoneos/”是编译之后生成的目录,HelloWorld.app是包文件,HelloWorld是二进制文件。 包文件HelloWorld.app可以使用点击右键菜单“显示包内容”,其中HelloWorld文件是我们这个应用的二进制文件。其它的都是资源文件,包括图片、属性列表文件、nib和storyboardc文件,nib是编译之后的xib文件,storyboardc是编译之后的故事板文件等。 应用打包就是将HelloWorld.app包文件打包成为HelloWorld.zip,具体操作是右键点击HelloWorld.app包文件弹出菜单,选择压缩“HelloWorld”,这样就会在当前目录下生成HelloWorld.zip压缩文件了,请将这个文件保存好,我们会在下一节介绍,上传应用时候还会使用到。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1214979,如需转载请自行联系原作者

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

Android开发如何去除标题栏title(转)

去除标题栏title其实非常简单,他有两种方法,一种是在代码中添加,另一种是在AndroidManifest.xml中添加: 1、在代码中实现: 在此方法setContentView(R.layout.main)之前加入: requestWindowFeature(Window.FEATURE_NO_TITLE);标题栏就没有了。 2、在AndroidManifest.xml中实现: 注册Activity时加上如下的一句配置就可以实现。 <activityandroid:name=".Activity" android:theme="@android:style/Theme.NoTitleBar" ></activity> 转自:链接 本文转自SharkBin博客园博客,原文链接:http://www.cnblogs.com/SharkBin/p/5056806.html,如需转载请自行联系原作者

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

手把手教你制作.a静态库(iOS开发

知识普及: 什么是库? 库是程序代码的集合,是共享程序代码的一种方式 根据源代码的公开情况,库可以分为 2 种类型 开源库 公开源代码,能看到具体实现 比如 SDWebImage 、 AFNetworking 闭源库 不公开源代码,是经过编译后的二进制文件,看不到具体实现 主要分为:静态库、动态库 静态库和动态库 静态库和动态库的存在形式 静态库: .a 和 .framework 动态库: .dylib 和 .framework 静态库和动态库在使用上的区别 静态库:链接时,静态库会被完整地复制到可执行文件中, 被多次使用就有多份冗余拷贝 (左图所示) 动态库:链接时不复制,程序运行时由系统动态加载到内存,供程序调用,系统只加载一次,多个程序共用,节省内存 (右图所示) 需要注意的是:项目中如果使用了自制的动态库,不能被上传到 AppStore! 制作 .a 1、新建项目-> 选择 “Cocoa Touch Static Library” 2、添加库需要包含的源代码,将你工程里的代码添加到打静态库工程里: 3、配置一下工程: 4、选择需要暴露出来的 .h 文件, .m 文件会自动编译到 .a 文件中: 需要暴漏出的文件类在这里设置: 引入的网络框架设置:(有些会自动引入,有些需要手动引入,根据编译报错,可以检查。) 5、编译前检查一下是debug模式还是release模式,选择release模式: 分debug和release模式: Debug-iphoneos 文件夹里面的东西是用在真机上的 Debug-iphonesimulator 文件夹里面的东西是用在模拟器上的 如果 Scheme 是 Release 模式,生成的文件夹就以 Release 开头 6、选择真机设备,然后 Command+B 编译, libSPCustomerServerse.a 文件从红色变为黑色 (注意建议先选择真机,这样才会变色,如果先选择模拟器,那么编译通过了,但是不会由红变黑,实际上是已经编译了模拟器的,只是给人一种假象,好像没编译一样,还是红色的) 7、选择模拟器,建议选择iPhone6以上的(选择高级点的,低级的也可用,若选了低级的,高级的有可能就不适配了)然后依然 Command+B 编译,模拟器和真机环境下用的 .a 文件是分开的。 8、合并模拟器(release-iphonesimulator)和真机(release-iphoneos)下的.a,以便支持真机和模拟器,合并后的.a大小大约是不合并的2倍左右。 show in finder 合并步骤: 举例:1、新建文件夹:"dabao"; 2、将上述的release-iphonesimulator和release-iphoneos两个文件拷贝进"dabao"文件夹。 3、打开终端,执行以下操作: 一、在终端输入:lipo -create 二、将release-iphonesimulator下的.a拖进终端,输入一个空格; 三、继续将release-iphoneos 下.a 拖进终端,输入空格; 四、继续输入:-output ,打个空格; 五、输入合并后的.a所要放的文件路径(这里举例依然放在“dabao”这个文件夹下,则我的电脑的路径为:/Users/ntalker-zhou/Desktop/dabao/libSPCustomerServerseSDK.a),回车,在相应的文件下即可生成一个.a,该.a即是合并后的.a 4、检查合并后的.a是不是满足所有要求,依然在终端进行以下操作: 一、在终端输入:lipo -info ; 二、将合并后的.a拖进终端 ,回车; (注意:终端每一步记得要用空格隔开,否则会出错哦!) 这样.a 就成功制作出了,只需要将暴漏的头文件以及制作的.a放入工程,别人就可以使用你的程序了,再也不用担心源码暴漏或别人随意修改你的代码了,不过如果有图片资源,图片资源是不能打进.a的,需要在外面添加的哦。 (有时候为了编译通过,根据需要,需要设置一下工程配置比如我需要配置xml等… 文/哇哇卡(简书作者) 原文链接:http://www.jianshu.com/p/a1dc024a8a15# 著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。 本文转自ljianbing51CTO博客,原文链接:http://blog.51cto.com/ljianbing/1887229 ,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

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

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

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

用户登录
用户注册