Android高级编程笔记
- 格式:pptx
- 大小:14.66 MB
- 文档页数:132
start是用来让动画从开头开始播放的。
如果动画设置了一个大于0的播放延迟(startDelay),那么调用该方法后还需要等到延迟的时间过去才回开始播放。
停止动画:end方法或cancel方法来停止一个播放着的动画。
在两种方式中动画都会终止并且只有再次调用start方法才会重新开始播放。
两者的区别则在于停止后动画所在的状态,1)cancel方法来停止动画后,动画只是停止了它的时间轴,动画的状态会停在一个中间态(intermediate state)。
2)end 方法来停止一个动画,那么动画会直接快进到该动画最后一帧并且停止,所有的对象都会保持在动画最终结束后的状态。
在Kitkat 中增加的没有怎么被大家关注到的新API则是带来了动画可以暂停和恢复的能力。
在那之前,一个动画如果被取消并且停留在当前的中间态,此时你用start 方法去重启动画,动画只会从一开始重新播放。
现在,你则可以调用pause方法来暂停当前播放中的动画,pause也会有和cancel 方法一样的功效让动画停留在中间态,但是当你使用resume 方法去恢复这个动画的时候,动画会从这个状态继续播放下去。
这个方法顾名思义是用来让动画从开头开始播放的。
如果动画设置了一个大于0的播放延迟(startDelay),那么调用该方法后还需要等到延迟的时间过去才回开始播放。
我们有两种停止动画的方法,你可以用end方法抑或cancel方法来停止一个播放着的动画。
在两种方式中动画都会终止并且只有再次调用start方法才会重新开始播放。
两者的区别则在于停止后动画所在的状态,当你使用cancel方法来停止动画后,动画只是停止了它的时间轴,动画的状态会停在一个中间态(intermediatestate)。
如果通过end 方法来停止一个动画,那么动画会直接快进到该动画最后一帧并且停止,所有的对象都会保持在动画最终结束后的状态。
在Kitkat 中增加的没有怎么被大家关注到的新API则是带来了动画可以暂停和恢复的能力。
Android开发学习笔记by---- 三爷一、新建项目Application Name: 应用程序名,即该应用的名称,日后在安卓市场上将显示该App名称,与项目无关。
Project Name:项目中的工程名(项目中的App名),注意,在项目中将使用该名称,该工程将被存放在下面命名的包下,命名时要注意规范。
Package Name:包名,格式为“com.自定义的包名.工程名”,其中包名自定义,但包名后的工程名必须和上面的Project Name一至。
Build SDK:选择android SDK的版本,建议选择1.6版本兼容范围广一点Minimum Required SDK:该程序兼容的最低SDK版本,这里选择的版本必须跟上面选择的Build SDK版本一致。
Activity Name:第一个Activity的名称,随意命名,它将是程序的入口Layout Name:为第一个Activity布局的xml文件名称,随意命名,建议与其对应的activity 名称有一定的关联性。
Title:上面设置的Activity的标题(这个在程序里都可以改)二、项目文件夹说明com.PackageName.ProjectName:该项目的文件夹,里面存放我们编写的源文件gen:由ADT自动生成,其中包含有一个R.java的文件是用于声明res文件夹下的资源的句柄,程序将通过该文件来引用项目中的资源,该文件不要随意改动,。
Android 1.6:这里面是android的SDK包,程序中所有引用android的类都是从这个包里引用;这里的1.6为新建项目时选择的sdk版本号,这里的版本号会根据你新建项目时选择的版本号不同而不同。
bin:这个目录存放编译生成的android安装文件assets:存放项目的资源,比如视频、音频、图片等较大的资源,注意该目录下的资源不会被生成句柄,所以只能通过路径来引用。
res:存放项目的资源,比如图标、图片、音频等,该目录下的资源会被R.java文件自动生成句柄以方便程序引用。
Android 开发简介简介黑莓和iPhone 都提供了受欢迎的、高容量的移动平台,但是却分别针对两个不同的消费群体。
黑莓是企业业务用户的不二选择。
但是,作为一种消费设备,它在易用性和“新奇特性”方面难以和iPhone 抗衡。
Android 则是一个年轻的、有待开发的平台,它有潜力同时涵盖移动电话的两个不同消费群体,甚至可能缩小工作和娱乐之间的差别如今,很多基于网络或有网络支持的设备都运行某种Linux 内核。
这是一种可靠的平台:可经济有效地进行部署和提供支持,并且可直接作为面向部署的良好的设计方法。
这些设备的UI 通常是基于HTML 的,可通过PC 或Mac 浏览器查看。
但并不是每个设备都需要通过一个常规的计算设备来控制。
想象一下传统的家用电器,例如电炉、微波炉或面包机。
如果您的家用电器由Android 控制,并且有一个彩色触摸屏,会怎么样?如果电炉上有一个Android UI,那么操控者甚至可以烹饪点什么东西。
在本文中,了解Android 平台,以及如何将它用于移动和非移动应用程序。
安装Android SDK,并构建一个简单的应用程序。
Android 简史Android 平台是Open Handset Alliance 的成果,Open Handset Alliance 组织由一群共同致力于构建更好的移动电话的公司组成。
这个组织由Google 领导,包括移动运营商、手持设备制造商、零部件制造商、软件解决方案和平台提供商以及市场营销公司。
从软件开发的观点看,Android 正处在开源领域的中心位置。
市场上第一款支持Android 的手机是由HTC 制造并由T-Mobile 供应的G1。
这款设备从设想到推出花了大约一年的时间,惟一可用的软件开发工具是一些实行增量改进的SDK 发行版。
随着G1 发行日的临近,Android 团队发布了SDK V1.0,用于这个新平台的应用程序也浮出水面。
为了鼓励创新,Google 举办了两届“Android Developer Challenges”,为优胜的参赛作品提供数百万美金的奖励。
Android学习笔记Android学习笔记-常用的一些源码,防止忘记了。
1.长点击控件菜单,即我们常说的右键菜单,不过好像ContextMenu不支持ICON的,所以即使在源码里面可以使用setIcon函数,但是还是不会有效果的。
一般有下面三个步骤:// 通常在onCreate函数中注册一个控件,btn为需要弹出ContextMenu的控件this.registerForContextMenu(btn);///////////////////////////////////////////////////////////////////////////////// 下面函数是创建ContextMenu的,v是被点击的控件// 根据v进行判断可以对不同的控件,创建不同的ContextMenupublic void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo)///////////////////////////////////////////////////////////////////////////////// 下面函数是响应ContextMenu点击事情的。
public boolean onContextItemSelected(MenuItem item)2. Toast显示信息,可以方便的来输出信息Toast.makeText(this, "Info", Toast.LENGTH_LONG).show();3. 关于MENU的操作有两个比较重要的了,函数原型:public abstract MenuItem add (int groupId, int itemId, int order, CharSequence title);public abstract SubMenu addSubMenu (CharSequence title);一般的函数有:menu.setHeaderTitle("MenuTitle");menu.setHeaderIcon(R.drawable.icon);menu.add(0, 0, 0, "item0").setIcon(R.drawable.icon);menu.add(0, 1, 1, "item1");/////////////////////////////////////////////////////////////////////////////// SubMenu sub = menu.addSubMenu("SubMenu");sub.add(0, 5, 5, "item5");sub.add(0, 6, 6, "item6");4.获取屏幕的分辨率isplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); dm.widthPixelsdm.heightPixels5.显示POPUP对话框,类似于Windows的MessageBox函数,不过这个要比MessageBox强大多了,,,可以设置单选或者多选项,以及其响应,有两种方法可以一:实现Activity的onCreateDialog函数。
Android学习笔记(by quqi99 MSN: quqi99@)Android platform是一个用于开发移动程序的软件包,它包括了操作系统、中间件及一些关键应用。
开发者能使用android SDK为Android platform开发应用,这些应用使用JA VA语言书写,运行在虚拟机Dalvik(一个专为手机程序开发的基于linux内核的JA VA虚拟机)。
1 什么是Android1.1 Android的特性✓应用框架,让一些基础设施得以重用✓Dalvik虚拟机,专为开发移动程序优化✓集成的浏览器,(基于WebKit引擎)✓优化的图形库,(2D图形库以及基于OpenGL ES 1.0规范的3D图形库)✓SQLite,用于结构化数据的存储,是一个数据库✓多媒体支持,支持多种音频,视频格式(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)✓GSM技术(依赖具体硬件)✓Bluetooth, EDGE, 3G, WiFi(依赖具体硬件)✓Camera, GPS, compass, accelerometer(依赖具体硬件)✓丰富的开发环境(DEBUG工具,内存及性能工具,Eclipse的插件等)1.2 Android的架构Android操作系统的模块如下:应用:Android已集成了一些应用,如邮件客户端,SMS程序,日历,地图,浏览器等应用框架:程序库:例行程序Linux内核2 Andvoid起步2.1 开发环境配置使用Eclipse + Android Development Tools (ADT)插件。
在Help> Software Updates> Find and Install....中键入更新地址:https:///android/eclipse/2.2 运行第一个Andvoid程序使用Eclipse插件1、建立的工程类型为:Andvoid Project2、建立Launch Configuration. Run > Open Run Dialog... or Run > Open Debug Dialog命令行运行程序1、创建工程activityCreator .ActivityName2、编译。
第四章管理Android系统桌面第一节管理壁纸初识Android壁纸在Android中,壁纸分为静态与动态两种。
静态壁纸是一张图片,而动态壁纸则以动画为表现形式,或者可以对用户的操作作出反应。
这两种形式看似差异很大,其实二者的本质是统一的。
它们都以一个Service的形式运行在系统后台,并在一个类型为TYPE_WALLPAPER 的窗口上绘制内容。
➢Android壁纸的实现与管理分为三个层次:⏹WallpaperService与Engine。
同SystemUI一样,壁纸运行在一个Android服务之中,这个服务的名字叫做WallpaperService。
当用户选择了一个壁纸之后,此壁纸所对应的WallpaperService便会启动并开始进行壁纸的绘制工作,因此继承并定制WallpaperService是开发者进行壁纸开发的第一步。
Engine是WallpaperService中的一个内部类,实现了壁纸窗口的创建以及Surface的维护工作。
另外,Engine提供了可供子类重写的一系列回调,用于通知壁纸开发者关于壁纸的生命周期、Surface状态的变化以及对用户的输入事件进行响应。
可以说,Engine类是壁纸实现的核心所在。
壁纸开发者需要继承Engine类,并重写其提供的回调以完成壁纸的开发。
这一层次的内容主要体现了壁纸的实现原理。
⏹WallpaperManagerService,这个系统服务用于管理壁纸的运行与切换,并通过WallpaperManager类向外界提供操作壁纸的接口。
当通过WallpaperManagaer的接口进行壁纸的切换时,WallpaperManagerService会取消当前壁纸的WallpaperService的绑定,并启动新壁纸的WallpaperService。
另外,Engine类进行窗口创建时所使用的窗口令牌也是由WallpaperManagerService提供的。
@、创建Activity的要点1、一个Activity是一个类,并且这个类要继承Activity2、需要复写onCreate()方法3、每一个Activity都需要在AndroidManifest.xml文件中进行配置,如果一个Activity配置了<intent-filter />的MAIN属性,则这个Activity就是启动时默认执行的Activity4、为Activity添加必要的控件Activity可以理解为与用户交互的接口,以及控件的容器@、Intent1、一个Intent对象包含了一组信息:a、Component name 组件名,如另一个Activityb、Action 动作:如newIntent(Intent.ACTION_SENDTO,uri) 中的Intent.ACTION_SENDTO 指发短信的服务c、Data 传送的数据,如上面的Uri uri =Uri.parse(“smsto://77677888”);d、Categorye、Extras 额外的信息,是类似map的键值对f、Flags@、Menu控件的添加方法:需要覆写Activity的onCreateOptionsMenu(Menu menu){ }方法。
该方法其实是一个回调方法。
在方法内部操作传入的menu就Ok例:public boolean onCreagteOptionsMenu(Menu menu){menu.add(0,1,1,R.string.exit);menu.add(0,2,2,R.string.about);return super.onCreateOptionsMenu(menu);} //该函数产生菜单界面监听菜单的事件,当点击菜单按钮时,会调用该函数,传入该菜单项的引用public Boolean onOptionsItemSeleted(MenuItem item){if(item.getItemId() ==1){//item是添加时add方法的第二个参数finish();//退出}}1、android的可执行文件 .dex;android上的安装文件 .apk;android 使用了自己的dalvik而不是sun的JVM,JVM是基于栈,而dalvik 是基于寄存器。
第三章基本控件1、基本控件2、组件的添加到布局中有两种方式:在代码中编写、在布局文件中布局。
3、Button 相应点击事件在代码里注册View.OnClickListener监听器XML设置android:onClick第四章使用容器1、常用的布局:LearLayout\RelativeLayout\TableLayout\FrameLayout\ScrollView LinearLayout中的所有部件都必须指定android:layout_width和android:layout_height特性,值可以是实际像素,可以是"wrap_content"(即包含内容),"fill_parent"(即填充父元素)。
第五章使用选择部件1、Android 的适配器负责为选择部件提供数据源,也负责将单独的数据元素转换为显示在选择部件中的特定视图2、ArrayAdapter接受3个参数要使用的上下文(通常就是当前的activity的实例)要使用的视图的资源ID要实际显示的选项数组或列表3、ListView调用setAdapter()以提供数据和子视图。
通过添加一个侦听器,以便在选项变化时作出反应。
setOnItemSelectedListener()、setOnItemClickListener()你想自定义布局,只要将ListView标识为@android:id/listlistview只能响应单击列表选项的操作。
多选必须设置setchoicemode();4、GridView可以为我们提供一个可供选择的二维选项网格。
5、AutoCompleteTextView看成是EditText和Spinner的组合。
AutoCompleteTextView是EditText的子类。
Android:completeThreshold:表示在触发列表筛选功能之前,用户必须输入的最少字符数目AutoCompleteTextView不支持选择侦听器,我们可以注册一个TextWatcher,从而在文本变化时,也可以收到通知。
Android学习笔记今天记录一下这段时期学习Android的笔记,这些笔记比较凌乱,但总归是有用的,以后什么时候有用,可以直接查询来使用。
通过命令操作contentprovideradb shell content insert --uri 的使用在命令行下输入adb shell content会提示相关的使用说明ubuntu sqlite3可视化sudo apt-get install sqlite3sqlite3 -versionsudo apt-get install sqlitebrowsersqlitebrowser查看某一条提交记录git show 9bc2f472e9cf204c737025b5d7101ba16c43b356git log --pretty=oneline ./src/com/android/providers/settings/SettingsBackupAgent.javagoogle浏览器下载安装sudo apt-get install chromium-browser chromium-browser-l10n查询修改Settings数据库中的字段值adb shell settings get namespace keyadb shell settings put namespace key valueadb shell settings delete namespace keyadb shell settings list namespaceandroid studio原码导入mmm development/tools/idegen/development/tools/idegen/idegen.sh反编译遇到的问题apktool.jar下载https:///iBotPeaches/apktool/downloads将apktool和apktool.jar放置到usr/local/bin目录下,并且设置其为可执行文件sudo chmod +x apktoolsudo chmod +x apktool.jarapktool d xxx.apk反编译的时候可能会出现这样的错误:com.googlecode.dex2jar.DexException这是因为当前是odex文件,需要执行下面的操作:java -jar baksmali-2.0.3.jar -d system/framework -x xxx.odex-d 参数就是指定到那个目录下寻找那些所需的jar文件,如果所需的jar包就在当前目录,那么就不需要指定该目录了。