【网学网提醒】:网学会员,鉴于大家对新版Android开发教程5十分关注,会员在此为大家搜集整理了“新版Android开发教程5”一文,供大家参考学习!
stephenson37(
网学)贡献
Android编程基础
封面
1
Android编程基础
Android模拟器
模拟器参数
参数格式
emulator[option][-qemuargs]
option选项
-sysdir-system
-datadir-kernel-ramdisk-image-init-data-initdata-data-partition-size-cache-no-cache-nocache-sdcard-wipe-data-avd-skindir-skin-no-skin-noskin-memory-netspeed-netdelay-netfast-tarce-show-kernel-shell-no-jni-nojni-logcat为模拟器在目录中搜索系统硬盘镜像为模拟器从文件中读取初始化系统镜像设置用户数据写入的目录为模拟器设置使用指定的模拟器内核设置内存RAM镜像文件(默认为/ramdisk.img)废弃,使用-system替代设置初始化数据镜像(默认为/userdata.img)和"-init-data"使用方法一致设置数据镜像(默认为/userdata-qemu.img)system/data分区容量大小(MB)设置模拟器缓存分区镜像(默认为零时文件)禁用缓存分区与"-no-cache"使用方法相同指定模拟器SDCard镜像文件(默认为/sdcard.img)清除并重置用户数据镜像(从initdata拷贝)指定模拟器使用Android虚拟设备设置模拟器皮肤在目录中搜索皮肤(默认为/skins目录)选择使用给定的皮肤不适用任何模拟器皮肤使用方法与"-no-skin"相同物理RAM内存大小(MB)设置最大网络下载,上传速度网络时延模拟禁用网络形态代码配置可用显示内核信息在当前终端中使用根Shell命令Dalvik运行时禁用JNI检测使用方法与"-no-jni"相同输出给定tag的Logcat信息
2
Android编程基础
-no-audio-noaudio-audio-audio-in-audoi-out-raw-keys-radio-port
-ports,-onion-onion-alpha<%age>-onion-rotation0|1|2|3-scale-dpi-device-http-proxy
-timezone-dns-server-cpu-delay-no-boot-anim-no-window-version-report-console-gps-keyset-shell-serial-old-system-tcpdump-bootchart-qemuargs……-qemu-h-verbose-debug-debug--debug-no--help-help--help-disk-images-help-keys-help-debug-tags-help-char-devices-help-environment-help-keyset-file-help-virtula-device禁用音频支持与"-no-audio"用法相同使用指定的音频backend使用指定的输入音频backend使用指定的输出音频backend禁用Unicode键盘翻转图重定向无线模式接口到个性化设备设置控制台使用的TCP端口设置控制台使用的TCP端口和ADB调试桥使用的TCP端口在屏幕上层使用覆盖PNG图片指定上层皮肤半透明度指定上层皮肤旋转调节模拟器窗口
尺寸(三种:1.0-3.0,dpi,auto)设置设备的resolution(dpi单位)(默认165)通过一个HTTP或HTTPS代理来创建TCP连接使用给定的时区,而不是主机默认的在模拟系统上使用给定的DNS服务调节CUP模拟禁用动画来快速启动禁用图形化窗口显示显示模拟器版本号向远程socket报告控制台端口重定向GPS导航到个性化设备指定按键设置文件名根shell的个性化设备支持旧版本(pre1.4)系统镜像把网络数据包捕获到文件中bootcharting可用向qemu传递参数显示qemu帮助和"-debug-init"相同可用,禁用调试信息使指定的调试信息可用禁用指定的调试信息打印出该帮助文档打印出指定option的帮助文档关于硬盘镜像帮助支持按钮捆绑(手机快捷键)显示出-debug命令中的tag可选值个性化设备说明环境变量指定按键绑定设置文件虚拟设备管理
3
Android编程基础
-help-sdk-images-help-build-images-help-all当使用SDK时关于硬盘镜像的信息当构建Android时,关于硬盘镜像的信息打印出所有帮助
4
Android编程基础
进程:
在Android中,进程完全是应用程序的实现细节,不是用户一般想象的那样.
它们的用途很简单:
通过把不信任或是不稳定的代码放到其他进程中来提高稳定性或是安全性通过在相同的进程中运行多个.apk代码来减少消耗通过把重量级代码放入一个分开的进程中来帮助系统管理资源.该分开的进程可以被应用程序的其他部分单独地杀死如果两个没有共享相同的用户ID的.apk试图在相同的进程中运行,这将不被允许,并且系统会为每一个apk程序创建不同的进程会
线程
Android让一个应用程序在单独的线程中,指导它创建自己的线程应用程序组件(Activity,service,broadcastreceiver)所有都在理想的主线程中实例化没有一个组件应该执行长时间或是阻塞操作(例如网络呼叫或是计算循环)当被系统调用时,这将中断所有在该进程的其他组件你可以创建一个新的线程来执行长期操作
5
Android编程基础
Android释放手机资源,进程释放优先级
当系统资源消耗,Android将会杀死一些进程来释放资源.
进程优先级顺序:
①前台进程:包含一个前台Activity,包含一个正在运行的广播接收器,正在运行的服务(当前用户所需的Activity,正在屏幕顶层运行的Activity)②可视进程:包含一个可视化的Activity(Activity可视的,但是不是在前台的(onPause),例如显示在一个前台对)话框之后的以前的Activity)③服务进程:包含一个被开启的服务(处理服务,不是直接可视,例如媒体播放器,网络上传,下载)④后台进程:包含一个不可视的Activity(带有一个当前不可
视的Activity,可以在任意时刻杀死该进程来回收内存)⑤空进程没有持有任何应用程序组件
6
Android编程基础
Android应用开发1
分析HelloAndroid
打开HelloAndroid工程
src文件夹源文件HelloAndroid.java主程序文件R.java资源文件AndroidLibraryJava库Assets文件夹静态文件打包
res文件夹drawable文件夹程序图标(ico.png)layout文件夹布局UI(main.xml)values文件夹程序用到的String,颜色**(string.xml)
AndroidMainfest.xml描述应用程序,构成,组件,权限bin文件夹classes.dex编译的java二进制码HelloAndroid.apkAndroid安装包(APK包)自定义的包文件夹存放编译后的字节码文件
Main.xml
整体布局表示线性布局xmlns:android="schemas.android/apk/res/android"android:orientation="vertical"控件布局垂直往下布局android:layout_width="fill_parent"android:layout_height="fill_parent"上层控件填充满图形空间派生于View
名字空间
button控件ID按实际宽度高度显示填充
7
Android编程基础
R.java
通过res文件夹下的xml文件定义自动生成的,main.xmlico.pngstring.xml是配套的关联,进行修改后R.java自动重新生成
AndroidManifest.xml
有关版本,程序信息,java包,程序图标,程序记录信息等.Manifest.xml文件轮廓
8
Android编程基础
添加编辑框与按钮
packagezyf.Study.AndroidSturdyByMyself;importandroid.app.Activity;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.EditText;importandroid.widget.TextView;publicclassAndroidSturdyByMyselfextendsActivity{privateEditTextgetNameEditText;privateButtonbutton_Login;privateTextViewshow_Login_TextView;/**Calledwhentheactivityisfirstcreated.*/@OverridepublicvoidonCreate(BundlesavedInstanceState){supersuper.onCreate(savedInstanceState);setContentView(R.layout.main);getNameEditText=(EditText)findViewById(R.id.widget29_getName_EditText);button_Login=(Button)findViewById(R.id.widget30_Login_Button);show_Login_TextView=(TextView)findViewById(R.id.widget31_showLogin_TextView);newbutton_Login.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){//TODOAuto-generatedmethodstubshow_Login_TextView.setText(getNameEditText.getText()+"欢迎您进入");}});}}
9
Android编程基础使用Intent启动另一个Activity
newIntentshowNextPage_Intent=newIntent();thisclassshowNextPage_Intent.setClass(UsingBundel.thisthis,NextPageActivity.classclas
s);startActivity(showNextPage_Intent);
在多个Activity之间切换时候,注意每个Activity都应在AndroidManifest.xml中有所声明定义(如下)
新的Activity在AndroidManifest.xml中必须定义声明
在不同Task中启动Activity
Intent.FLAG_ACTIVITY_NEW_TASK
10
Android编程基础
Android应用开发2
Activity
何谓Activity:
最简单的就是你可以把Activity看成一个UserInterfaceProgram,原则上它会提供使用者一个交互式的接口功能,那一个Activity只有一个UI吗?非也,举例来说:一个email程序,就可能包含三个Activity:邮件列表的Activity显示邮件内容的Activity写新邮件或回复邮件的Activity
所有的Activity在系统里由Activity堆栈所管理,当一个新的Activity被执行后,它将会被放置到堆栈的最顶部,并且变成runningActivity,而先前的Activity原则上还是会存在于堆栈中,但它此时不会是在前景的情况,除非刚刚那个新的Activity离开.
Intent与Intentfilters
Intent:
Android使用了一个很特别的类别Intent,用来从一个画面跳另一个画面,Intent是用来描述一个程序想要做些什么事情.在Intent的数据结构中有两个很重要的部分,一个是动作(action)及对数据产生反应(datatoactupon)Action主要的内容有MAIN(程序的入口点).,VIEW,PICK,EDIT等等.Data则是用URI的形式来表示.比如:想要查看一个人的联络数据时,你需要建立一个Intent,它包含了VIEW的动作(action)及指向该人数据的URI描述句.
IntentFilter:
当Intent要求做某件事时,IntentFilter被用来描述这个Activity能够做些什么事情.比如一个Activity要能够显示个人联络数据,你就必需要在intentFilter说明你要如何处理个人联络数据,并用ACTION_VIEW呈现出来.IntentFilter都会在AndroidManifest.xml清单里面声明.
11
Android编程基础BroadcastIntentReceiver
当你想要写一个程序来对外部的事件做些处理时,可以实用BroadcastIntentReceiver.比如:当电话响铃时,有短信时.BroadcastIntentReceiver它并不能够拿来显示UI画面,它必需利用NotificationManager来通知使用者它们感兴趣的事件发生了.BroadcastIntentReceiver同样的可以在AndroidManifest.xml中声明,但你也可以用写Context.registerReceiver()程序的方式来注册你自己的BroadcastIntentReceiver.你自己的程序并不会因为BroadcastReceiver被呼叫而被它执行起来,而是当BroadcastReceiver被触发时系统会依据需求来执行相应的程序.程序可以利用Context.sendBroadcast()来发出它们自己的IntentBroadcast给其它的程序.
Intent与Activity
而画面的切来切去则是由resolvingIntent来实现的.当你想产生新的画面时,现行的Activity就使用startActivity(myIntent).然后系统就会根据所有已安装的程序所定义的Intentfilter来看哪个程序是最适合myIntent.startActivity被呼叫时,当resolvingIntents的处理过程是伴随而来的.ResolvingIntent提供我们两个好处:让Activities可以很容易的利用Intent的方式去使用别的程序的功能.Activities可以很容易的在任何情况下由新的Activity所取代.
12
Android编程基础添加新的Activity
packagezyf.Android.Study;import……importandroid.content.Intent;importandroid.net.Uri;importandroid.view.View.OnClickListener;publicclassAndroidStudy_TWOextendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){supersuper.onCreate(savedInstanceState);setContentView(R.layout.main);finalEditTextinName=(EditText)findViewById(R.id.name);finalTextViewresult=(TextView)findViewById(R.id.result);Buttonbutton_Start_Browser=(Button)findViewById(R.id.submit_toNET);Buttonbutton_Login=(Button)findViewById(R.id.show_Login);Buttonbutton_showLoginName=(Button)findViewById(R.id.submit_toshowLoingName);newbutton_Start_Browser.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){UrimyUri=Uri.parse("flashwing.net");IntentopenBrowserIntent=newIntent(Intent.ACTION_VIEW,myUri);startActivity(openBrowserIntent);}});newbutton_Login.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){newIntentopenWelcomeActivityIntent=newIntent();thisopenWelcomeActivityIntent.setClass(AndroidStudy_TWO.thisthis,classWelcome.classclass);startActivity(openWelcomeActivityIntent);}});newbutton_showLoginName.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){result.setText(inName.getText()+"欢迎您进入");}});}}
13
Android编程基础
封面
14
1