本帖最后由 王震阳老师 于 2015-4-7 14:22 编辑
汇总贴:http://bbs.itheima.com/thread-180149-1-1.html
pdf附件回复可下载:
Android-通知&Fragment&反编译&NinePatch
1. 通知(★★★)通知用于在状态栏显示消息,消息到来时以图标方式表示,如果需要查看消息,可以拖动状态栏到屏幕下方即可查看消息,在Android中通过通知管理器NotificationManager来发出或关闭一个通知。 使用步骤:
点击通知,会跳转到指定页面。 注意: - 若设置了弹出通知会有声音/震动/亮灯的效果,注意添加对应权限,否则会抛
错比如,设置震动需加权限android.permission.VIBRATE 2.获取延期意图PendingIntent时,封装的意图对象必须采用隐式的方式 2. 反编译(★)Android打包好的APK如果直接解压缩,那么里面的布局文件和字节码文件如法直接使用,但是我们可以通过以下三个反编译工具对一个APK进行反编译。 1.apktool 反编译布局文件, 反编译之后会在apk相同的目录下创建一个 命令:apktool d xxx.apk - dex2jar 把.dex文件转换成.jar的文件, 会在相同目录下生成一个
xxx.jar 命令:dex2jar xxx.dex 3.jd-gui 查看jar文件 3. NinePatch(★)3.1什么是NinePatch图片NinePatch是一种很有用的PNG图片文件夹 格式,它可以在特定区域随文字大小进行缩放 上图中背景图片的中间区域会随着文字的大小进行缩放背景图片就是一张NinePatch图片。 3.2如何制作NinePatch图片NinePatch图片可以使用android自带的draw9patch工具来制作,该工具在SDK安装路径的tools目录下 打开“sdk\tools\draw9patch.bat”,执行此工具然后点击“File”->“open 9-path”打开一张用于制作NinePatch图片的原图,通过在画布的四边画线来指定缩放区域和文字所在区域。 画布的左边和上边是控制图片拉伸的;画布的右边和底边是控制内容显示的区域的 使用鼠标左键点击拖动来画线,使用鼠标右键点击拖动才擦除线条 点击File,点击保存,就会生成后缀名为”.9.png”格式的图片 3.3 使用NinePatch图片做背景的效果通过设置android:background="@drawable/bg"属性来设置背景图片,使用一般图片作为背景和使用NinePatch图片做背景的效果对比。 4. Fragment(★★★★)4.1什么是FragmentFragment就是小型的Activity,它是在Android3.0时出现的。 Fragment是表现Activity中UI的一个行为或者一部分。可以把fragment想象成activity的一个模块化区域,有它自己的生命周期,接收属于它自己的输入事件,并且可以在activity运行期间添加和删除(有点像一个可以在不同的activity中重用的“子Activity”)。 Fragment必须被嵌入到一个activity中。它们的生命周期直接受其宿主activity的生命周期影响。当一个activity正在运行时,就可以独立地操作每一个Fragment,比如添加或删除它们。 Fragment可以定义自己的布局、生命周期回调方法,因此可以将fragment重用到多个activity中,因此可以根据不同的屏幕尺寸或者使用场合改变fragment组合。 4.2如何创建一个Fragment- 为Fragment定义一个布局
- 定义类继承Fragment
- 重写类中的onCreateView方法,返回一个View对象作为当前Fragment的布局。
fragment第一次绘制它的用户界面的时候,系统会调用onCreateView()方法。为了绘制fragment的UI,此方法必须返回一个作为fragment布局的根的view。如果fragment不提供UI,可以返回null。 4.3如何将Fragment添加到ActivityActivity必须在清单文件中进行声明,但是Fragment不需要,Fragment只需要在Activity的布局文件中声明就可以了。 注意:代码中的四个属性是必须的要给的,“android:name”属性:指定了在layout中实例化的Fragment类是哪个。 当系统创建这个activity layout时,它实例化每一个在layout中指定的Fragment,并调用它们的onCreateView()方法,来获取每一个Fragment的layout,系统将从Fragment返回的View 直接插入到<fragment>元素所在的地方 每一个fragment都需要一个唯一的标识,如果activity重启,系统可以用来恢复Fragment,并且可以用id来捕获Fragment来处理事务,例如移除它。 有3种方法来为一个fragment提供一个ID: 为android:id属性提供一个唯一ID; 为android:tag属性提供一个唯一字符串; 如果以上2个你都没有提供,系统将使用容器view的ID; 4.4如何切换Fragment 要在activity中管理Fragment,需要使用FragmentManager可以通过调用activity的getFragmentManager()取得它的实例。 案例:点击不同的按钮切换到不同的Fragment进行显示 步骤: - 设置布局文件:添加三个按钮用于切换Fragment,并在按钮下方添加一个FrameLayout用来替换成响应的Fragment。
- 创建三个Fragment,SportsFragment、NewsFragment、GameFragment。
其余两个Fragment跟SportsFragment代码一致,只是布局文件不同。 sports()方法、games()方法同上,因此不再给出代码清单。 4.5 Fragment的生命周期Fragment的生命周期和activity生命周期很像。 onAttach:绑定到activity onCreate:创建fragment onCreateView: 创建fragment的布局 onActivityCreated: activity创建完成后 onStart: 可见, 不可交互 onResume: 可见, 可交互 onPause: 部分可见, 不可交互 onStop:不可见 onDestroyView: 销毁fragment的view对象 onDestroy: fragment销毁了 onDetach: 从activity解绑了 4.6 Fragment的向下兼容Fragment是在Android 3.0才推出的,若想在3.0的低版本下使用Fragment,则需要执行下面2步: - 把所有Fragment和FragmentManager改成support-v4包下的类
- 把Activity的继承改为FragmentActivity(support-v4包下的)
4.7 Fragment之间的通信案例案例:创建一个用于显示选项卡的Fragment和一个用于显示内容的Fragment,当 选项卡切换时,使内容的Fragment信息跟着一起切换。 步骤: - 先创建选项卡Fragment和内容Fragment,并在activity_main.xml布局文件中进行设置,其布局效果如下:
- 为选项卡Fragment创建布局文件,其布局效果如下:
至此,本文档完!
2014年12月26日星期五 0:49:31 北京市海淀区东北旺中路东馨园
|