本次教程的目标是,学会将安卓apk反向工程后,如何找到需要修改的布局、对布局修改、对布局进行美化,如何隐藏布局(按钮等),以及如何在界面上添加按钮并响应点击事件,添加图片,添加文本框等控件,认识不同类型的布局和他们的特点。并熟悉常用的布局属性及其作用。
第二十二讲 安卓Apk布局修改从入门到精通
课程大纲
本次教程的目标是,学会将安卓apk反向工程后,如何找到需要修改的布局、对布局修改、对布局进行美化,如何隐藏布局(按钮等),以及如何在界面上添加按钮并响应点击事件,添加图片,添加文本框等控件,认识不同类型的布局和他们的特点。并熟悉常用的布局属性及其作用。
需要的软件
《安卓抓包大师》,本教程用来示范修改的apk,从 安卓修改大师的工具箱/网络抓包下载
《Android Studio》 用来修改代码和布局的专业开发工具
准备工作
下载本次教程用来修改布局的安卓抓包大师,电脑上面安装安卓修改大师和雷电9模拟器,电脑安装并配置Android Studio开发工具(您可以直接在安卓修改大师里面的编辑器里面修改,不过建议用Android Studio进行代码和布局的修改,因为他提供了良好的代码提示功能)。将Android Studio和安卓修改大师进行绑定。将上述安卓抓包大师用安卓修改大师进行反编译,做好布局修改的准备工作。
如何定位需要修改的布局文件
1、直接搜索界面上面的文字进行定位
2、用安卓修改大师抓取界面,获取资源id或者直接定位
3、分析代码定位(类源代码中搜索 R.layout.)
如何对布局进行修改
常用的属性:
android:id 控件id,可以抓取界面后通过该id进行布局定位
android:layout_width 宽度,单位dip,可设置 0.0dip 实现隐藏,也可以设置wrap_content 随内容改变长度 fill_parent 跟随父控件长度
android:layout_height 高度,单位dip,可设置 0.0dip 实现隐藏,也可以设置wrap_content 随内容改变长度 fill_parent 跟随父控件长度
android:background 背景颜色,可设置#eeaabbcc,16位进制的颜色值,其中前两位(ee)代表透明度,00-ff(0到256对应的16进制值),后六位为颜色的RGB值,具体颜色值可以用取色器获取。背景颜色可为纯色(6位,例如#ff0000代表红色),也可以为半透明色(8位,例如#aaff0000,半透明红色),当然这个属性也可以设置背景图片,例如将aa.png拷贝到drawable下面,可以设置为 @drawable/aa
android:textColor 文字的颜色,属性说明同上
android:text 输入框、编辑框或者按钮上面显示的文字
android:textSize 文字大小,单位dip,例如设置 10dip
android:textStyle 文字样式,可设置bold粗体,normal 正常,italic 斜体
android:visibility 设置是否可见,一般用这个属性设置隐藏控件gone 不占位隐藏 invisible 占位隐藏 visible 可见
android:gravity 文字对齐方式 center 上下左右居中 center_vertical 垂直居中 center_horizontal 水平居中 bottom 底部对齐 left左侧对齐 right右侧对齐
android:paddingLeft 控件内部左侧留白 单位dip,例如设置 10dip
android:paddingRight控件内部右侧留白 单位dip,例如设置 10dip
android:paddingTop 控件内部顶部留白 单位dip,例如设置 10dip
android:paddingBottom控件内部底部留白单位dip,例如设置 10dip
android:marginLeft 控件外部左侧留白 单位dip,例如设置 10dip
android:marginRight控件外部右侧留白 单位dip,例如设置 10dip
android:marginTop 控件外部顶部留白 单位dip,例如设置 10dip
android:marginBottom控件外部底部留白单位dip,例如设置 10dip
android:src 图片地址,例如将aa.png拷贝到drawable下面,可以设置为 @drawable/aa
android:onClick 绑定点击事件的方法名称,后续会重点讲解
动手实验:
1、按钮设置背景颜色,文字颜色,调整文字大小,修改文字
2、通过修改宽度高度为0dip来隐藏按钮
3、通过设置是否可见来隐藏按钮
如何添加控件
常用的控件:
文本显示控件
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="要显示的文字信息" />
图片显示控件
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/图片名称" />
按钮控件
<Button
android:layout_width="wrap_content"
android:layout_height="40.0dip"
android:text="测试按钮"
android:onClick="buttonBeCliecked"
android:textColor="#ff0000" />
输入框
<EditText
android:layout_width="100dip"
android:layout_height="wrap_content"/>
动手实验:
1、界面上添加一个文本框,一个图片和一个按钮
2、按钮点击事件里面绑定安卓修改大师的弹窗插件,点击后弹窗(下一节主要内容)
如何给控件绑定点击事件
1、任何控件都可以添加android:onClick属性来绑定点击事件(图片,文件框,按钮),该属性对应的是处理点击事件的自定义方法名称,例如 btnOnClick
2、在当前布局调用的Activity页面中,添加下面代码来响应事件
.method public btnOnClick(Landroid/view/View;)V
.locals 10
#这里添加你的任何逻辑
return-void
.end method
3、用安卓修改大师的插件功能,手工方式添加插件代码到该方法里面,编译后查看效果