-
安卓应用开发需要注意什么问题?安卓应用开发教程
一、安卓程序开发五大编程要点提升Android应用开发性能手机系统的不断更新导致了相应手机程序的不断变化,为了开发适应手机系统的软件程序,开发者也需要不断的提升自己手机程序开发的能力,来提升Android应用开发性能。下面就分享提升安卓应用开发性能的技巧,希望能够哪些开发者能够有所帮助。那么就说说确保Android应用程序响应迅即的几个编程要点。更多详情,请浏览http://gonglue.epwk.com/12952.html二、如何进行Android开发Android应用开发问题Android手机系统是一个不在陌生的名词,Android系统用于各大手机应用平台。Android是Google开发的基于Linux平台的开源手机操作系统。下面罗列Android开发入门者常见的几个问题,希望能让开发者对Android应用开发有个初步认识。更多详情,请浏览http://gonglue.epwk.com/13183.html三、Android应用界面开发安卓应用界面布局方式Android应用界面要美观好看,就需要运用到一定的布局技术,Android布局是不可忽视的,是android应用界面开发的重要一环。在Android中,共有五种布局方式,分别是:TableLayout(表格布局),FrameLayout(框架布局),AbsoluteLayout(绝对布局),LinearLayout(线性布局),RelativeLayout(相对布局).更多详情,请浏览http://gonglue.epwk.com/13186.html四、Android软件开发方法安卓软件开发浅析随着手机的普及,以及塞班系统的衰退,Android已经充斥了整个世界,运营商、手机商、平板电脑厂商都在使用,甚至家电厂商们也开始涉足,对Android程序开发者的需求激增,大量的企业都在寻找Android软件开发的其他方式,以便在安卓软件开发中获得更多的机遇。下面来盘点一下Android系统软件开发的方法,简单来说分成四层:更多详情,请浏览http://gonglue.epwk.com/13189.html五、Android程序优化Android应用开发性能优化Android应用开发完成后,就需要对应用程序进行优化测试,程序测试是一个繁琐的事情,执行起来来也会有一定的难度。对于Android手机来说,由于Google全面开放多任务同时运行着Java这样的解释型语言导致对RAM的开销很大,随着Android平台的发展很多新手程序员在经验等问题,会导致你的应用执行效率较低。针对于发布Android应用应该注意以下几点:更多详情,请浏览http://gonglue.epwk.com/13190.html六、Android应用开发SQLite技术SQLite技术特点在Android应用开发都要用到一定的开发技术,和一些开发软件,下面就为大家介绍Android开发中的SQLite技术,希望多大家有所帮助。SQLite一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能。此外它还是开源的,任何人都可以使用它。许多开源项目(Mozilla,PHP,Python)都使用了SQLite.更多详情,请浏览http://gonglue.epwk.com/13203.html七、Android应用开发ViewStub使用ViewStub特点在开发Android应用程序的时候,布局也是一个常遇到的难题,经常会遇到这样的情况,会在运行时动态根据条件来决定显示哪个View或某个布局。那么最通常的想法就是把可能用到的View都写在上面,先把它们的可见性都设为View.GONE,然后在代码中动态的更改它的可见性。这样的做法的优点是逻辑简单而且控制起来比较灵活。但是它的缺点就是,耗费资源。虽然把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,也就是说仍然会创建对象,会被实例化,会被设置属性。也就是说,会耗费内存等资源。更多详情,请浏览http://gonglue.epwk.com/13204.html八、从何入手开发手机应用程序Android应用开发基础自从google推出Android系统,特别是Androidde开源,使得开发Android手机应用软件程序的人越来越多。那么作为一个Android应用开发人员,要学习哪些知识呢?更多详情,请浏览http://gonglue.epwk.com/13306.html九、Android软件汉化教程apk安装包文件结构要对Android软件进行汉化,就要先学习安卓应用汉化教程,了解应用汉化软件,最常见的是安卓汉化软件就是apk。在进行对Android英语汉化前,要详细了解apk安装包。这样才能找出应用汉化的文件和需汉化的内容。下面就为大家介绍apk安装包的文件结构,方便大家进行Android应用汉化。更多详情,请浏览http://gonglue.epwk.com/13399.html十、学安卓好还是学ios好Android和iOS比较iOS来源于Apple的OSX,是UNIX系统,OSX已经有差不多10年的历史,从内核底层到软件架构都是逐步发展过来的。iOS使用ObjectivC这个古老的语言来做开发。而Android是Google基于Linux搞来的,严格意义上讲Android并不是一个Linux系统,它没有Linux的xwin,没有glibc,缺乏一整套标准的Linux程序。Android应用绝大部分都是使用JAVA开发,跑在Dalvik虚拟机上(一小部分使用NDK)。更多详情,请浏览http://gonglue.epwk.com/14900.html以上就是本文的全部内容,更多精彩文章,请浏览http://www.epwk.com/special/azjcjc/page/1/Android桌面特色软件实用手机桌面软件介绍除非注明,文章均为(一品威客网)原创,转载请保留链接:http://gonglue.epwk.com/14440.html
-
Android开发之Toast提示信息 Android之Toast基础教程
创建提示消息,利用按钮首先布局中有个按钮,假设id为btn01java代码如下:123456789101112Buttonbtn01=(Button)findViewById(R.id.btn01);assertbtn01!=null;//以上是按钮btn01在java中的声明btn01.setOnClickListener(newView.OnClickListener(){@OverridepublicvoidonClick(Viewview){//定义按钮监听函数Toast.makeText(MainActivity01.this,"技术",Toast.LENGTH_LONG).show();//定义Toast消息}});使用Toast的方法1、简洁一点的1Toast.makeText(MainActivity01.this,"技术",Toast.LENGTH_LONG).show();2、直接一点的12Toasttoast=Toast.makeText(getApplicationContext(),"nnuli",Toast.LENGTH_LONG);toast.show();
-
Android ROM制作教程,让你拥有自己喜欢的ROM
一.制作目的:1.培养个人兴趣,感受动手动脑的快乐。2.学习手机基本知识,最终动手制作自己的ROM。3.帮助那些需要帮助的朋友(说不定有人喜欢你制作的ROM)二.制作原理:1.安卓基础知识普及:Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软件组成,号称是首个为移动终端打造的真正开放和完整的移动软件。目前,最新版本为Android2.4Gingerbread和Android3.0Honeycomb。①底包:官方的系统包,相当于我们的Windows的操作系统,事实上它相当于一个纯净版或者内核版的系统包,是最底层的东西。扩展名为sbf,底包通常是官方发布的,ROM作者直接拿来用的,可以选择的版本不会太多,通常更新也不会频繁。底包通常使用PC端刷机工具(RSD)配合Bootloader的工程模式完成刷入。②升级包(镜像包):广大玩家制作的底包增强包,通常表现为一个update.zip文件。升级包是对底包的扩展和增强,包含一系列的辅助工具和服务,没有中文的底包通过升级包可以实现中文。当然,很多功能也是通过升级包来实现的。可以说,在刷新了底包后,配合刷新相应的升级包,这样才形成一个完整系统。升级包通常通过Recovery工具,从SD卡读取刷入。③Bootloader:相当于电脑里面的bios(基本输入输出系统),手机一开机,控制手机的就是Bootloader。我们通常所说的进入Bootloader,实际上是指进入Bootloader的工程模式,既是刷机模式,在此模式下可以将moto的sbf文件(底包)刷到机器里面。④Recovery:Moto手机内置的一个独立备份恢复工具,类似电脑上的一些一键还原系统,既是在系统出现问题的时候仍然可以打开的一个模式。Moto的Recovery主要提供了WIPE(硬启,清除数据,恢复出厂设置)和Update(通常用于安装升级包,update.zip)功能。Recovery是不能直接刷新的底包的,通常它刷新的升级包(update.zip)的方式是:自动寻找SD卡上的特定文件,然后写入。⑤基带(Baseband):是手机中的一块专门的代码,或者可以理解成为一个专门负责通讯的BIOS,负责完成移**络中无线信号的解调、解扰、解扩和解码工作。基带的不同会造成信号效果的不同。因为各地、各网络实际情况不同,需要大家自己选择适合自己的基带。⑥WIPE:wipe后就恢复了出厂设置,包括联系人、短信、安装的软件等全部删除。俗称硬启,恢复出厂设置。注意,wipe后app2sd和root权限需要重新做。而且app2sd重要的分区步骤也要重新来过。某些说法提到在刷新底包或者升级包前需要进行WIPE操作,我对此操作的必要性不是很确定。⑦OpenRecovery(简称or):由于MOTO很蛋疼的在update.zip上做了一些手脚,这些东西影响到了升级包的制作。于是高手们就搞出了一个OpenRecovery,这其实就一个第三方的增强版的Recovery工具,某些OpenRecovery已经发展成为一个具有很多功能的小系统了(类似WindowsPE),在这个or中,可以完成很多东西,我们完全可以把or想象成电脑上用的应急PE系统,在上面可以调整超频、基带、app2sd、更换启动画面、wipe、改变时区、调整键盘布局,甚至链接USB当读卡器等等,凡是recovery能做的,or都可以做,recovery不能做到,or可以做到。一般OpenRecovery在sd卡上有两个部分存在:update.zip和OpenRecovery目录,最新的GOT底包添加了新的一个OpenRecovery-CFG目录,用来存放各种个人文件。update.zip就是用来坑MOTO一个标准的的zip升级包,而真正的升级包要放在/sdcard/OpenRecovery/updates目录下。⑧App2sd:说白了,其实很简单,就是把APK文件安装到sd卡上,android是Linux脱胎而来,App2sd的原理就是对SD卡进行分区,然后把SD上划分出来的某个分区合并到系统分区中去(听不懂,不要紧),划分出来的分区是Ext2格式,一般Windows不能识别,不要惊慌,正常现象。App2sd对sd卡要求比较高,如果感觉app2sd后比较慢,可以试试换一张C4的sd卡。因为在2.1的环境下,app2sd需要对sd进行分区,操作比较复杂,E文不好的小白或者电脑基础薄弱的小白容易失误。建议对Android非常熟悉了再做App2sd。⑨Root:大家都知道android系统脱胎自Linux,也正是这个开源的内核让广大玩家可以自由发挥。Root是Linux系统下的系统级账号,拥有系统的全部权限,Android设计上的不开放这个用户的,目的是为了保护系统安全,但是这个保护似乎也带来很多不便。于是就一些工具和方法来开放这个账号。开放Root账号的方法似乎有很多,这里就不再细说。原理上分析,root的账号,应该通过在Android系统安装某个系统级别的服务,该服务具有root权限,然后其它需要root权限的程序再向这个服务请求root权限。WIPE、刷机都有可能会造成root权限失效,需要重新root权限。额外说明:①从原理上分析,通常底包,Bootloader,Recovery,基带都是可以刷新替换的,升级包当然更可以。但是底包、Bootloader很少会有第三方开发或者修改的,一般都使用官方发布的。底包有时候会内置Bootloader、Recovery,这样的底包刷新时会连上述两者一起更新(推测结果,不确定)。更新这样的底包是有危险的,有可能会造成Bootloader损坏,这个东西损坏了,基本就是变砖了,真正的变砖,只能花钱去修了。只有这个东西没坏,就不是砖。②我们通常所说的刷机ROM实际是升级包,升级包是对应于特定的底包制作的,所以刷机时务必确保使用的底包和升级包版本上保持一致。③需要注意版本号的还有:Bootloader版本、基带版本、Recovery版本④目前有些OpenRecovery工具支持底包、升级包一起从SD卡读取刷入⑤似乎刷机前确保系统干净整洁是很重要的,很多教程提到要通过WIPE-刷底包的步骤来确保刷机前的干净,实际上如果底包版本没有变化,刷底包似乎、也许、大概、可能是不必要的。2.系统结构及文件简单剖析:一个常见的自制ROM根目录会有以下几个文件夹及文件:data,-IN,system,boot.img(锁了BL的可以无视这个,但制作时需要它,打包时把它拿出来。)系统目录说明①应用程序安装目录1)系统应用程序所在目录/system/app/*.apk2)用户安装应用程序所在目录/data/app/*.apk3)注意:a)在模拟器中,每重启一次,/system/app/下的应用都会被还原,有时/data/app下也会被清除b)若在/system/app和/data/app下有重名的应用,不一定会启动哪一个,尤其是在adbinstall杀死正在运行的程序时,有时旧的就会被启动②.用户数据所在目录/data/data/应用包名/shared_prefs配置文件/data/data/应用包名/databases/*库文件所在目录③.SD卡对应目录/sdcard/而我们需要处理的只是两个文件夹里面的内容:data/app——该文件夹里的文件可以全删,也可以自由添加自已所需安装的应用软件,刷机安装后可以自由删除。system/app——在这个文件夹下的程序为系统默认的组件,可以看到都是以APK格式结尾的文件,但有些系统自带的ROM里面还有和APK文件名对应的odex文件。我们主要是针对该文件夹里的文件进行精简,如果有odex文件的,删除APK文件名时同时也删除与其对应的odex文件。虽然一般定制时只是对以上两个文件夹里的文件做相应的增减,但我们还是一起来了解system相应目录常见相应文件的用途吧。rom版本不同,里面的APK也会不一样,其它文件夹下需要改动的较少,或者不需要改动。但app文件下是制作时的重点,所以详细列出:systemappsystemappAlarmClock.apk闹钟systemappBrowser.apk浏览器systemappBugreport.apkBug报告systemappCalculator.apk计算器systemappCalendar.apk日历systemappCalendarProvider.apk日历提供systemappCamera.apk照相机systemappContacts.apk联系人systemappDownloadProvider.apk下载提供systemappDrmProvider.apkDRM数字版权提供systemappEmail.apk电子邮件客户端systemappFieldTest.apk测试程序systemappGDataFeedsProvider.apkGoogleData提供systemappGmail.apkGmail电子邮件systemappGmailProvider.apkGmail提供systemappGoogleApps.apk谷歌程序包systemappGoogleSearch.apk搜索工具systemappgtalkservice.apkGTalk服务systemappHTMLViewer.apkHTML查看器systemappHtc**.apk集成**客户端PEEPsystemappIM.apk即使通讯组件包含MSN、yahoo通systemappLauncher.apk启动加载器systemappMaps.apk电子地图systemappMediaProvider.apk多媒体播放提供systemappMms.apk短信、彩信systemappMusic.apk音乐播放器systemappPackageInstaller.apkapk安装程序systemappPhone.apk电话拨号器systemappSettings.apk系统设置systemappSettingsProvider.apk设置提供systemappSetupWizard.apk设置向导systemappSoundRecorder.apk录音工具systemappStreet.apk街景地图systemappSync.apk同步程序systemappTalk.apk语音程序systemappTelephonyProvider.apk电话提供systemappUpdater.apk更新程序systemapp***Services.apk***服务systemappVending.apk制造商信息systemappVoiceDialer.apk语音拨号器systemappVoiceSearch.apk语音搜索app文件夹内放的就是内置软件,有不想要的,直接删除之。请在删除之前先弄清楚它能不能删除。有些官方内置的软件,删除了ROM就废了。当然,你也可以在没弄清楚的情况下乱删一气,只要在刷机完发现问题之后,把删除的软件,一个个放回去排查,刷个十遍八遍,大约也就搞定了。所以我们要佩服那么敢于探索的先驱,不容易啊。fonts文件夹放的是手机的字体,如果没有美术细胞的人就不要乱改,改字体有时候会死人的,刺眼、字形不协调、大小不一致等等诸如此类。要改也刷机完以后再改。具体方法要参见自己区的人发的帖子。lib文件夹顾名思义,是内置软件的库文件。有些软件需要动态库支持才能正常使用的,比如常见的输入法之类的。所以,如果你向一个原本可以正常使用的ROM中加入了新的软件之后,反而出现某程序意外关闭某程序意外结束的情况后,那么基本上就是你忘了把库文件给它移动过去。bin文件夹中放的是系统内置的工具,像什么busybox,su之类的都在里面,没事不要删除它,可以添加,但不要删除。etc文件夹中放置的是系统的设置,诸如无线、GPS、DHCP、拨号、APN列表之类的设置。这个目录中,如果你改了重要的CONF文件,则可能系统出问题。也可以改一部分不重要的东西(比如说APN列表)而不出现问题,但貌似APN列表没必要改。framework目录就是系统的UI了,想改界面的人应该改这个目录中的文件。。大约也就是替换一些什么图片,换掉界面框架什么的,改改字体颜色什么的?以达到改换界面的目的。media目录是系统内置的媒体文件,如开机音乐,内置的通话铃声、信息铃声、闹钟铃声,可以改,但格式是OGG的,可以自己去搜索如何换格式。usr目录是系统的部分使用配置,包括键盘映射表什么的,没事不要改。。。xbin目录,好吧,这个目录可以放一些工具,而且貌似官方本身在里面放了一个tcpdump,是截获网络数据包的。没试过删除它,推荐有冒险精神的可以删除之,再将结果告诉我们。system:系统分区.我们刷机器一般就是刷的这个分区.userdata:数据分区.cache:缓存分区recovery:Recovery分区,相当于建立在hboot与android系统间的一个中间层,如名字一般,主要用于系统调试和恢复。.boot:存放内核和ramdisk的分区.hboot:这个是SPL所在的分区,即bootloadersplash1:这个就是开机第一屏幕了.radio:这个是无线所在的分区,即基带所在分区。misc:其他分区3.创建一个刷机包,update-脚本语法说明①简单举例:创建一个update.zip文件是很简单的事情,你所需要做的就是将文件放置到与Android文件系统中相对应的文件夹中,然后编写一个用来复制这些文件到手机对应位置的update-,文件。作为举例,比如安装Calculator.apk到system/app文件夹,复制libsec-ril.so文件到system/lib文件夹:新建一个空文件夹(本文例:G:android)新建用来放置Calculator.apk的文件夹C:androidsystemapp以及用来放置libsec-ril.so的文件夹G:androidsystemlib。创建用来放置update-文件的文件夹G:android-INFcomgoogleandroid。创建一个名为updater-的文件,其内容如下:1.show_progress0.102.3.copy_dirPACKAGE:systemSYSTEM:4.5.show_progress0.1106.行1和行5:显示进度条行3:复制刷机包中的system文件夹到Android的/system注意:你应该在文件的最末尾多添加一个空行(也就是行6)将C:android压缩中的所有内容压缩为zip包(千万记住:是压缩android这个文件夹中的内容,不是android文件夹本身)为android.zip签名②基础语法篇1.copy_dir语法:copy_dir⑩默认时区。在/system/default.prop中修改persist.sys.timezone(如果没有该项,则手动添加)的值为Asia/Shanghai(即东八区),即persist.sys.timezone=Asia/Shanghai注:如果没有/system/default.prop,也可以在/system/build.prop中修改或添加。⑾锁了bl的同学,在修改时注意看运行时的语句,凡是涉及到的功能修改了boot.img,你就趁早删了update-相关语句重来吧,不然也不会出什么大事,就是手机卡在第一屏进不去,或者一直进入恢复模式。解决办法如果你先前备份了,那就还原一下。如果没备份,重刷底包吧。⑿接下来就是打包签名,按照提示一步一步来就OK了。
-
没有Android基础都能学会的Xposed基础教程
0×01前言随着手机使用者增多,手机智能化程度提高,各种app应运而生,这些app中不免有些恶意程序,时刻威胁着使用者,对用户的隐私等造成侵犯。究其原因是系统开源导致安全威胁,这次通过学习一个开源框架xposed来了解移动app的安全。0×02利用原理XPOSED的安装器替换安卓系统的app_process文件,从而实现对系统的接管,通过回调模块的方式来达到不用修改APK就能改变其表现行为的目的。该框架比较成熟,对应的模块也非常多,常用的还有模拟地理位置,伪装手机设备信息等,脑洞是非常之大,基本上能想到的都能做到。由于篇幅限制这里介绍一个简短而实用的案例,其他模块可以参考XPOSED官网的模块列表。0×03准备工作Android模拟器、Xposed框架、Androidstudio集成开发环境、2个相关api的jar包0×04开整新建工程注意首字符大写选择4.0.3及以上的sdk可以选择没有activity然后自己添加,也可以直接生产个空activity(推荐)首先切换到Project工程结构视图下添加2个api的jar包然后切换回android(也可以直接在project下找)修改Manifest.xml文件修改manifest.xml添加依赖,进入build.gradle(有两个,选择ap目录下的)新建一个文件夹叫assets存放xposed的初始化文件,指定程序入口。Xposed_init模拟器端操作(此实验在模拟器下操作,防止物理机使用xposed过程中变砖)安装xposedinstaller拖进去就安装了,不演示。注意要开启手机的root权限,因为使用真机经常会卡死,或者变砖,很麻烦,所以用模拟器。然后重启,注意软重启速度快,看个人喜好,卡死就关机重开,真机卡死后需要进入recovery手动删除xposed模块才可启动。将androidstudio和模拟器连接(需要adb,这个自行百度)每次启动运行程序都会让选择使用哪个设备模拟器和环境弄好之后开始实现xposed插件的编写0×05插件编写1此代码功能是在xposed中打印日志,日志内容为所以运行过的app的包名packagecom.example.administrator.xposedtest;importde.robv.android.xposed.IXposedHookLoadPackage;importde.robv.android.xposed.XposedBridge;importde.robv.android.xposed.callbacks.XC_LoadPackage.LoadPackageParam;/***CreatedbyAdministratoron2018/2/8.*/publicclassTuorialimplementsIXposedHookLoadPackage{publicvoidhandleLoadPackage(finalLoadPackageParamlpparam)throwsThrowable{XposedBridge.log("Loadedapp:"+lpparam.packageName);}}实现效果(注意每次运行后都需要重启虚拟机来更新模块)打印了从启动设备时的所有app包名0×06插件编写-通过hook实现密码劫持首先需要写一个简单的登陆界面和跳转界面,如下图登陆界面登陆成功界面此处引入xposed提供的hook方法(实现方式是匿名内部类):findAndHookMethod(“包名”,hook的类型,“方法名”,参数,参数,***,newXC_MethodHook(){需要重写protectedvoidbeforHookedMethod(MethodHookParamparam)throwsThrowable{此方法为劫持之前(就是劫持的时候)此处劫持到账号密码修改}protectedvoidafterHookedMethod(MethodHookParamparam)throwsThrowable{此方法为劫持之后此处打印修改后的账号密码}});效果:通过修改密码,使认证无效,绕过登录验证packagecom.example.administrator.xposedtest2;/***CreatedbyAdministratoron2018/2/9.*/importandroid.util.Log;importde.robv.android.xposed.IXposedHookLoadPackage;importde.robv.android.xposed.XC_MethodHook;importde.robv.android.xposed.XposedBridge;importde.robv.android.xposed.callbacks.XC_LoadPackage;importstaticde.robv.android.xposed.XposedHelpers.findAndHookMethod;publicclassTutorialimplementsIXposedHookLoadPackage{publicvoidhandleLoadPackage(finalXC_LoadPackage.LoadPackageParamlpparam)throwsThrowable{if(!lpparam.packageName.equals("com.example.administrator.xposedtest2"))return;findAndHookMethod("com.example.administrator.xposedtest2.MainActivity",lpparam.classLoader,"isOK",String.class,String.class,newXC_MethodHook(){@OverrideprotectedvoidbeforeHookedMethod(MethodHookParamparam)throwsThrowable{XposedBridge.log("---HookStart---");XposedBridge.log("Uname="+param.args[0]);XposedBridge.log("Passwd="+param.args[1]);//param.args[0]="admin";//param.args[1]="admin";}@OverrideprotectedvoidafterHookedMethod(MethodHookParamparam)throwsThrowable{XposedBridge.log("---HookEnd---");XposedBridge.log("Uname="+param.args[0]);XposedBridge.log("Passwd="+param.args[1]);//XposedBridge.log("paramischangedalready");}});}}欢迎在评论区留言,一起学习,之后会发一些xposed的劫持实战,还有frida、substrate框架会在xposed后面发表内容有部分参考
-
Android平台设计规范整理
Android平台设计规范整理
-
IOS+ANDROID的切图与标注方法
之前的知识科普说了好些基础的概念,本篇将会结合之前我们讲到的数个概念来谈谈图为什么要这样切,标注为什么要这样做。iOS的切图与标注跑iOS的设备主要两种,iPhone和iPad。(iPodtouch就不讨论了,基本上跟iPhone一样。)iPhonesiPhone方面我们从非retina显示屏的iPhone3G/S讲到iPhone7/Plus。○苹果在推出iPhone4/S的时候首次为自己的智能手机产品配备retina显示屏。需要注意的是它的屏幕尺寸与iPhone3G/S一样,都是3.5寸,但分辨率却整整提升了四倍,也就是说同样大的屏幕塞进去了四倍的像素,PPI是前者的两倍,达到了326,视网膜屏第一次被用在iPhone之上。○iPhone5/S/C的屏幕达到了4英寸。值得注意的是,iPhone5/S/C屏幕横向还是与iPhone4/S一样保持有640颗像素,横向物理尺寸也没变,同样都是2.0英寸,变的是纵向的尺寸。屏幕边长了一点点,PPI维持不变。○iPhone6/7(Plus)屏幕分别为4.7英寸和5.5英寸。前所未有的尺寸,前所未有的分大小屏,前所未有逻辑分辨率,同时也是前所未有的物理分辨率。非Plus机型维持了326PPI,而Plus则去到了401PPI。更大的屏幕,更高的分辨率,iOS的设计师也是从这个时候开始需要输出@3x的切图了。关于Plus机型,不得不仔细说说它的一个小特点说到在iPhone6/7上,系统会根据350*667pt的逻辑画布进行一个二倍渲染,变成750*1334之后再将界面投射到屏幕上面去。Plus机型也差不多,它的逻辑画布的最佳大小是414*736pt(由于与非Plus机型的逻辑分辨率并不太悬殊,所以平时我们只是用一倍画稿进行设计也没有产生太大的问题,误差将由程序员使用一些技术上的布局手段减小)然后系统进行了一次三倍的渲染变为1242*2208px。但Plus机型的分辨率是1080*1920px的,逻辑画布渲染出来的大小怎么跟这个不一样,那还怎么准确投射,充满整个屏幕啊!在Plus机型上,渲染出来的1242*2208px会先降低采样变成1080*1920px然后再投射到屏幕上面去。我们还是来看图吧。1080*1920px相较于1242*2208px大约缩小了15%,那么很多尺寸都会出现小数,比如说131.3244px这样恶心数字,出现小数的话图片的边缘就会出现模糊的状况,而Plus机型上几乎所有图片都不是整数的,但得益于高分辨率的retina显示屏,我们的肉眼可能看不出来端倪(凑近一点看的话有可能能够看得出来大家不妨试试)。绝大部分情况下Plus的降低采样机制不会对我们的设计造成什么太过巨大的影响,记得输出@3X图即可,不过要说的是,越是细小的元素影响就会越大。iPadsiPad方面我们从非retina显示屏的第一代iPad到想要代替电脑的12.9寸的iPadPro再到iPadmini1/2/3/4。○苹果在推出第二代iPad的时候为iPad配备上了retina显示屏。iPad2/Air/Air2/Pro都维持了2048*1536的分辨率,PPI一直保持在264。7.9英寸的iPad的屏幕一直维持了这样的配置。○说出来你可能不信,除了第一代的iPadmini是非retina显示屏之外,其他(2至4代)mini的屏幕的分辨率都跟7.9英寸的iPad一模一样,物理分辨率都是2048*1536,逻辑分辨率都是768*1024,而由于屏幕变成了7.9英寸,所以PPI去到了326。○12.9英寸的iPadPro配备的超大屏幕的物理分辨率为2732*2048,逻辑分辨率为1366*1023,而PPI则去到了264。由于逻辑分辨率与其他机型实在太过悬殊,我们没办法还用跟普通iPad一样的画稿来做设计,是的老铁,你最好重开一稿重新设计。有些小伙伴可能会留意到,无论是iPhone还是iPad,好几代了屏幕的参数好像没怎么变化过,PPI不是越高越好吗?苹果是好久没升级自己屏幕,一块祖传屏幕忽悠消费者?不是的,因为人眼对于像素密度的要求会根据人眼距离屏幕的距离变化而变化,RMBP的PPI是109,被手机完爆,但是我们平时用起来还是觉得非常清晰锐利,因为我们用电脑的时候眼睛距离屏幕会比手机远,不需要那么高的像素密度也可以消除颗粒感。相应的使用距离配制相应的PPI,所谓够用就好。过高的PPI并不会带来多大的画质提升,反而会导致一连串不好的后果,加大处理器渲染负担,加大电池负担,不利于设计开发人员设计,屏幕的制造成本也会增加。早年安卓阵营出现了一些2K屏甚至4K屏的产品,现已销声匿迹,消费者根本不需要这么高分辨率的屏幕。苹果在相应的设备(无论从电脑到智能手机再到智能手表)上维持一个稳定的PPI是很明智的选择,稳定的屏幕参数非常非常有助于设计开发人员工作的开展,这种稳定性对开发者造成的便利恐怕超过了所有人的想象的。标注与切图——以Chrome浏览器为例在苹果尚未推出Plus机型的那段时间里设计师们一般都只需要输出一倍图和二倍图。一倍图针对的是没有配备retina显示屏的iPhone而二倍图针对的是配备retina显示屏的iPhone。Plus机型推出后就开始要输出三倍图了,且不配备retina显示屏的iPhone已经过于老旧,不再需要考虑。一般我们会在文件名后面加上@2X或@3X的后缀以标明文件的尺寸,就如上图所示,这是iOS的规范,还是值得准守一波的。至于iPad版本,规则也差不太多,只是iPad不需要三倍切图。总结○@2X,@3X,相应的素材请务必加上相应的后缀。○针对目前市面上的的屏幕尺寸而言,一倍图已经没有必要再输出了,而二倍、三倍图则必须要输出。○二倍三倍图的文件名必须是一样的,不然会被开发砍死。○以一倍画稿做设计,以一倍画稿输出标注文档,最后输出二倍、三倍图。○如无特殊情况,请确保文件都是.png格式。○一倍画稿输出的标注文档的单位应该为pt,而不是px。Android的切图与标注MDPI,HDPI,XHDPI,XXHDPI以及XXXHDPI大家都知道Android是一个开源系统,不像iOS只有苹果自家的机器能跑,屏幕尺寸一直以来也比较稳定,而运行Android系统的设备的屏幕却各式各样非常跳脱,这也就是以往大家经常说Android设备碎片化严重的原因之一。不过这种碎片化严重的情况来到今天已经改善了非常之多,纵使Google对于Andorid开源的策略从来没有变过,但OEM们开始不约而同地开始使用不那么“奇形怪状”的屏幕了,且某些低分辨率的机型随着时日变迁也已经被淘汰殆尽了。倒是iOS在推出Plus机型之后iOS屏幕碎片化的问题也开始凸显起来了,个人认为目前两大平台的屏幕碎片化问题都存在且大家都差不多,大家在对Android产品进行设计的时候大可不必那么担心。与iOS相似的是,设计师们同样也是需要输出不同倍率的切图,只不过需要输出的倍率更多罢了。程序员将会把所有不同倍率的切图都装在同一个安装包里面,在运行的时候系统会根据屏幕的分辨率来自动选用正确倍率的切图。坦率地讲,假如我们要纠结到每块屏幕的逻辑分辨率的话,那么Android阵营的碎片化真的是无比严重,但是我们知道,只要逻辑分辨率差的不太远的话,我们能够用同一个稿来进行设计、输出切图,其中的误差必不可能避免但将会在一个可接受的范围之内。对于Android产品来说,一般我们都使用360*640px作为一倍稿进行设计。目前为止还需要我们输出切图的分辨率有五种:代表1倍的MDPI,1.5倍的hdpi,2倍的xhdpi,3倍的xxhdpi以及4倍的xxxhdpi(三星最近发布的S8就是这个倍率)。ldpi和tvdpi以及可以不予考虑了。有一点需要提出的是,被淘汰的tvdpi这种分辨率目前被很广泛地使用到了运行Android系统的可穿戴设备上,例如前阵子很火的Moto360智能手表,假如要设计手表上面的产品的话那么就得输出这个倍率的切图。下面给出一张图,让大家看看各个档次的DPI的代表机型,某些机型年轻一点的小同学(例如我自己)可能连听都没过,大家看看就好,开拓开拓眼界,无需过分在意。标注与切图——以Chrome浏览器为例与iOS一样,我还是建议大家使用一倍稿进行设计,然后再输出各种倍率的切图就好,但是Android系统要求图片资源的命名与管理图片资源的方式是和iOS是完全不同的。上篇我们简单的介绍了下iOS的图片资源的命名方式,很简单,就是文件名加上@2X、@3X这样的小标记。然而来到了Andorid平台我们就不这样命名了。以下这张长图是Android工程文件管理图片资源的方式,我们可以看到里面有从drawable-hdpi到drawable-xxxhdpi数个文件夹,你没猜错,这些文件夹里面就放着设计师们精心设计出来的各种.png切图。Android系统会自动根据屏幕的属性来选择使用哪个文件夹里面的那套切图。譬如说在新出的盖乐世S8上面运行的话,那么系统就会自动选择使用drawable-xxxhdpi文件夹里面的图,新出的小米6的话,就会自动选用drawable-xxhdpi文件夹里面的图。并且,我们输出的图片的名字全部都要是一样的,安装不同的倍率进行导出,并且不能带有后缀或其他标记,同个图切出来不同倍率五张资源,分别被放入了相应的文件夹里面。使用神奇SketchMeasure进行批量导出,程序员会跪着感谢你的。看起来可能会是这样的:○drawable-mdpi/[文件名].png○drawable-xhdpi/[文件名].png○drawable-xxhdpi/[文件名].png○drawable-xxxhdpi/[文件名].png以下拿运行于Android平板Nexus9上的Chrome浏览器作为例子。Chrome的安装包里面带有了这五种倍率的切图,然而运行在Nexus9这台平板电脑之上的时候,它选用了xhdpi这一档分辨率的切图来对自己进行适配。总结○说是说有七种分辨率的图要切,但是就目前市面上的设备来讲你只要关注mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi这五种已经够了。如针对可穿戴设备的话,那可能会用到tvdpi。○360*640px作为一倍稿进行设计。○做标注时使用dp作为单位(iOS使用的是pt,但实际上差不多一个意思)○输出.png格式的图片资源。○记住命名规则,同个图片资源的各个倍率的文件名都是一样。-end-
-
Android的系统架构概览 Android的系统架构包括哪些部分
Android开发技术相信很多人已经非常的熟悉了,Android程序员的就业薪资与就业前景一直都是不错的,因此很多人参加Android培训或自学Android开发技术也是无可厚非的。今天小编就Android系统组成部分和运行时环境和读者一起分享。Android的系统架构概览Android的系统架构包括哪些部分Android系统组成和运行环境是什么Android系统运行环境怎么写:1、Android系统组成:(1)Linux内核层:该层是基础,包含各种驱动,并提供操作系统的基本功能。(2)中间层:该层包括程序库(Libraries)和Android运行时环境。(3)应用程序框架:该层是编写核心应用所使用的API框架。开发者可以使用这些框架来开发自己的应用,但必须遵守该框架的开发原则。(4)应用层:该层是各种应用软件,包括通话、短信、日历、地图、浏览器等核心应用程序,这些应用程序都是使用Java编写的。2、Android运行时环境Android运行时环境由一个核心库和Dalvik虚拟机组成。核心库提供Java编程语言核心库的大多数功能。每一个Android应用程序都在自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik在一个设备中可以同时高效运行多个虚拟系统,它依赖于Linux内核的一些功能,例如线程机制和底层内存管理机制等。Dalvik虚拟机执行.dex类型的Dalvik可执行文件,该格式文件针对小内存的使用进行了优化,同时虚拟机是基于寄存器的。所有的类由Java编译器编译,然后通过SDK中的“dx”工具转化成.dex格式,最后由Dalvik虚拟机执行。现如今Android系统开发的发展毋庸置疑,不过智能设备和PC互相联动无缝对接是互联网技术的又一风口,所以Android系统仍然需要在这方面进一步的更新迭代。才能确保移动端市场霸主地位。
-
Android游戏设计步骤大公开
如今搭载Android操作系统的手机数量比iPhone多得多。据悉,Android设备平均每天激活40万台。Android手机上的小游戏也是层出不穷,每天坐地铁都能看见身边一圈人在玩开心消消乐。这些让我们爱不释手,好玩精美的小游戏都是怎么做出来的呢?Android游戏设计步骤大公开1手机游戏开发简介游戏的本质就是在屏幕上不断地显示和更新图片,只不过不是胡乱地更新,而是根据程序逻辑来控制。一款完整的游戏需要多方面的知识,比如游戏的创意、背景、故事情节、游戏音效,游戏风格、游戏类型、运行速度、适配机型等。而且,游戏的开发需要策划、美工、程序、测试的协同工作和默契配合完成的。2游戏框架设计首先需要一个用于显示游戏界面的视图类,接着需要构建一个整个游戏逻辑类来控制当前屏幕显示哪个界面,甚至对界面进行一些逻辑上的处理。在创建和控制了视图显示之后,要让游戏能够动起来,需要开启一个线程来实时更新视图显示界面并刷新视图。3地图设计通常游戏中的地图是多个小块组成的一个完整的大地图,而组成这些小块的数据一般可以使用一个二维数组来存储,然后通过程序以最快的方式将这些地图数据对应的小块映射到屏幕上组成一幅完整的地图。当然,这些数据也不是我们从键盘上一个个地输入进去的,一般情况下先由程序员做一个地图编辑器,在这个地图编辑器中用鼠标点击再保存,或者是从网络上下载一些成熟的编辑器,比如用mappy这样的工具生成地图,再用脚本语言为mappy写一个应该保持成什么格式的程序。通常地图分为45度角、俯视角和侧视角。4主角设计游戏中的主角在这里成为“精灵”,当然精灵包括的范围很广,不仅仅是主角,还有npc、道具等。既然是精灵,必然有很多动画,动画本身就是将图片一帧一帧地连接起来,循环地播放每一帧形成的。同样可以使用自己编写的精灵编辑器去编辑精灵,将精灵拆成很多部分,然后再组合起来,这样可以节省大量的空间。精灵类的特性,每次只能使用一个图像而不是多个图像来填充屏幕,可以有好几帧,但是一次只有一个显示。5图层管理器只需要将所有图层(包括地图、主角)一起添加到图层管理器中,然后设置视图查看时的位置及大小,调用图层管理器的paint方法就可以绘制出图层。绘制的顺序是按添加的反顺序,既先添加的后绘制,以免图层被覆盖之后显示不出来。6游戏音效首先我们将游戏中的音效分为如下几类:背景音乐、剧情音乐、音效(动作的音效、使用道具音效、辅助音效)等。背景音乐一般需要一直播放,而剧情音乐则只需要在剧情需要的时候播放,音效则是很短小的一段。7游戏存档游戏存档就是将玩家当前游戏的进度等信息存储下来,在玩家再次进入游戏时可以通过读取上次的存档来接着上次的进度继续游戏。(1).明确需要存储的数据首先,为了再次游戏能够顺利地转载上次的进度,需要保存主角的一些属性(包括位置,生命,攻击,防御等),还需要保存当前地图的一些属性(比如行,列,当前层数),同样还需要保存对话的相关内容,最后需要保存游戏的整个地图数据(每一层),还有当前的音乐状态。(2).保存数据获取存储的数据->将数据打包到properties中->将properties写入到文件中。(3).装载数据打开文件->将文件流装载进properties中->通过properties.get方法得到指定标签的数据-》将得到的数据赋值给应用程序中对应的变量。在退出游戏时,不管玩家是否保存都将自动保存下来。
-
Android游戏开发设计步骤
40万台。但iOS对开发商来说依旧是个更加有利可图、更受欢迎的平台。原因是:Android无需花钱买应用;众多设备和应用商店使得Android市场呈分散状态。Android游戏开发设计步骤1手机游戏开发简介游戏的本质就是在屏幕上不断地显示和更新图片,只不过不是胡乱地更新,而是根据程序逻辑来控制。一款完整的游戏需要多方面的知识,比如游戏的创意、背景、故事情节、游戏音效,游戏风格、游戏类型、运行速度、适配机型等。而且,游戏的开发需要策划、美工、程序、测试的协同工作和默契配合完成的。2游戏框架设计首先需要一个用于显示游戏界面的视图类,接着需要构建一个整个游戏逻辑类来控制当前屏幕显示哪个界面,甚至对界面进行一些逻辑上的处理。在创建和控制了视图显示之后,要让游戏能够动起来,需要开启一个线程来实时更新视图显示界面并刷新视图。3地图设计通常游戏中的地图是多个小块组成的一个完整的大地图,而组成这些小块的数据一般可以使用一个二维数组来存储,然后通过程序以最快的方式将这些地图数据对应的小块映射到屏幕上组成一幅完整的地图。当然,这些数据也不是我们从键盘上一个个地输入进去的,一般情况下先由程序员做一个地图编辑器,在这个地图编辑器中用鼠标点击再保存,或者是从网络上下载一些成熟的编辑器,比如用mappy这样的工具生成地图,再用脚本语言为mappy写一个应该保持成什么格式的程序。通常地图分为45度角、俯视角和侧视角。4主角设计游戏中的主角在这里成为“精灵”,当然精灵包括的范围很广,不仅仅是主角,还有npc、道具等。既然是精灵,必然有很多动画,动画本身就是将图片一帧一帧地连接起来,循环地播放每一帧形成的。同样可以使用自己编写的精灵编辑器去编辑精灵,将精灵拆成很多部分,然后再组合起来,这样可以节省大量的空间。精灵类的特性,每次只能使用一个图像而不是多个图像来填充屏幕,可以有好几帧,但是一次只有一个显示。5图层管理器只需要将所有图层(包括地图、主角)一起添加到图层管理器中,然后设置视图查看时的位置及大小,调用图层管理器的paint方法就可以绘制出图层。绘制的顺序是按添加的反顺序,既先添加的后绘制,以免图层被覆盖之后显示不出来。6游戏音效首先我们将游戏中的音效分为如下几类:背景音乐、剧情音乐、音效(动作的音效、使用道具音效、辅助音效)等。背景音乐一般需要一直播放,而剧情音乐则只需要在剧情需要的时候播放,音效则是很短小的一段。7游戏存档游戏存档就是将玩家当前游戏的进度等信息存储下来,在玩家再次进入游戏时可以通过读取上次的存档来接着上次的进度继续游戏。(1).明确需要存储的数据首先,为了再次游戏能够顺利地转载上次的进度,需要保存主角的一些属性(包括位置,生命,攻击,防御等),还需要保存当前地图的一些属性(比如行,列,当前层数),同样还需要保存对话的相关内容,最后需要保存游戏的整个地图数据(每一层),还有当前的音乐状态。(2).保存数据获取存储的数据->将数据打包到properties中->将properties写入到文件中。(3).装载数据打开文件->将文件流装载进properties中->通过properties.get方法得到指定标签的数据-》将得到的数据赋值给应用程序中对应的变量。在退出游戏时,不管玩家是否保存都将自动保存下来。
-
Android开发与移动应用优化思想
21CTO社区导读:在开始开发之前,你需要制定你的开发计划。本文就是告诉你如何分解和制定战略去优化你的移动应用开发性能。开发一个移动应用和如何创建一个PC端应用程序是有区别的。但是如何做到“正确”,却有很多个说法,软件开发就是如此。在本文中,我和大家讨论如何创建高性能优化的Android应用以及最佳实践。1少就是多在开始之前,我们应该奉行少就是多的观念。当Android4.1已经普及到市场97%以上时,你是否还是需要支持Android2.3?您是不是真需要使用兼容的库来提供高级的场景动画支持?需要第三方库来防止依赖注入吗?添加的每一个库都增加应用包的尺寸,要想调入到系统内存的速度加快,应该接近AndroidDEX方法限制,用绝对最少的库和依赖来启动应用,即只添加所需要的,这样要好得多。即使像AppCompat库这样的功能,从Android新版本到老版本功能,也是随着后面的需要再添加。但是很多时候,你会发现大多数需要的功能都有了,我们只需要AppCompat指定的一小部分。让我们的移动客户端尺寸更小,通常速度更快。不依赖太多的第三方依赖和库帮助我们的代理更简洁,也更容易让其它开发者理解。了解更多内部和外部工具,我们的知识宽度更为之受益。2简洁设计优化应用程序可以在设计与开发过程中完成。在开始编写应用程序之前,先制定设计确定需要的设计组件。在整个APP中复用所有组件、图标,包括布局和其它设计属性,不仅让APP有一致的用户体验,同时减少应用程序包中包含的设计资源。除了资源和空间占用外,还有一个决定设计的好机会,能够减少添加库的数量。从Android4以后的版本都支持ActionBar,Android5后引入了工具栏(ToolBar),使用工具栏意味着必须包含AppCompat。但是,如果我只是一个有快捷方式的基本工具栏来打开应用程序抽屉,则可能不需要工具栏,那么有ActionBar提供的功能就足够了。同样,寻找空间来简化复杂资源的设计属性。复杂的渐变效果可以被简洁方式替代,这样用AndroidXML就可以,而不用再引用图片。我们会经常使用相同的图标,如上一步,下一步,菜单等类似的图片,则可以在所有需要的地方重复使用相同的资源。寻找更多的空间,一个图片过滤器就可以替换状态指示和交互的专门设计。3减少同步加载如今的手机大多是多核处理器。Android应用框架设计的相当不错,可以充分利用CPU内核。我听说开发者都担心异步代码,当你在深入开发时,可能会增加代码复杂度。也就是说,使用非阻塞操作是让APP应用快速响应的关键。随着应用程序越来越复杂,启动画面和加载广告转换会越来越普遍。但这些大多数情况都可以避免,如果一个较小的API调用会加快屏幕的加载速度。如果在一个列表内容之前加载包含列表的布局,需要尽可能快的显示布局。有时需要一些额外时间来异步实现某些功能。但信息准备就绪时,我们需要触发一个事件,或者在设计中添加更小的加载和进度指示器,尽快将演示内容呈现给用户,尽量不需要中间转换是需要的。4花更少的时间我给各位关于优化的技巧就是使用最小的工具,技术以及设计,用更少的时间来实现。大多数情况下,应用的速度越快,结果也会更快。比如,Android的构建系统可以使用ProGuard来减肥,包括开发与生产环境。可以配置ProGuard,保留调试所需信息,同时让移动应用尺寸更小。在开发中使用ProGuard意味着在开发过程中,加载到设备时间更少,使开发环境和生产环境之间的差异降到最低。在设计上,在某个动画上要花数小时,如果这些动画对用户体验非常有用,如果不需要动画或者更简单的动画就足够了,那么去掉多余时间显示复杂的动画,这款APP可能会更快,体验更平滑。在添加一个全新的画面或某个专门的用户界面之前,请和大家一起讨论是不是已经有了一个已经存在的功能可以包含此功能。用户学习成本越低,我们开发的复杂度也更低。5多多讨论唯一需要多做的事,针对于我们的APP要多多讨论。在编码前,确定你的最终结果是什么,从想法到结果如何构建。清晰自己的用户界面布局,仔细考虑未来版本中我们要添加的交互效果和功能。在开始之前,我们讨论和考虑得越全面,辅以上面提到的“技巧”来优化代码。这样就意味着我们提供的是更符合预期的产品,当计划与执行一致时,结果会是优化的体验和成果。