该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
第五个教程是:
怎样修改锁屏 ---任你修改
1、相关锁屏的文件是system\framework\framework-res.apk和system\framework\android.policy.jar,framework-res.apk是关于界面显示的,我主要是修改它,android.policy.jar关于动做执行的,java不懂暂时无力修改。
1、相关锁屏的文件是system\framework\framework-res.apk和system\framework\android.policy.jar,framework-res.apk是关于界面显示的,我主要是修改它,android.policy.jar关于动做执行的,java不懂暂时无力修改。
2、直接用winrar打开framework-res.apk可以看到,中兴锁屏输出界面文件是framework-res.apk\res\layout\unlock_dna_typeb.xml,不过这是已经编译成16进制的文件,所以需要反编译才能看到原码,如果只是改图片和文字颜色也可以直接用16进制文档编辑器来做修改。注:此文件是国行摆钟锁屏的特有文件,原生锁屏是没有这个文件的,原生锁屏的代码在android.policy.jar内
3、用反编译工具反编译framework-res.apk,在获得的反编译目录内(我以反编译到framework-res目录为例),framework-res\res\layout\unlock_dna_typeb.xml文件就是锁屏输出的界面,用文本编辑器打开这个文件,原码说明参看下列代码备注:
<
com.android.internal.policy.impl.ZteLockScreenView
android:background="@drawable/unlock_bg" android:layout_width="fill_parent"
android:layout_height="fill_parent"
//ulock_bg是背景,改相应图片
xmlns:android="http://schemas.android.com/apk/res/android">
<
TextView android:textSize="19.0sp" android:textStyle="bold"
android:textColor="#ff000000" android:gravity="right" android:id="@id/carrier"
android:layout_width="480.0px" android:layout_height="wrap_content"
android:layout_marginTop="16.0px" android:layout_marginRight="15.0px" /> //
#ff000000是营运商颜色,默认#ff000000是黑色完全不透明
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:layout_marginLeft="0.0px" android:layout_marginTop="103.0px">
<
LinearLayout android: orientation="horizontal" android:id="@id/timeDisplay"
android:layout_width="243.0px" android:layout_height="75.0px"
android:layout_marginLeft="12.0px" android:layout_marginTop="0.0px">
<
ImageView android:id="@id/hour_1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@drawable/time_8"
/>
< ImageView android:id="@id/hour_0"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/time_8" />
< ImageView
android:id="@id/parting_point" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="2.0px"
android:src="@drawable/parting_point" />
< ImageView
android:id="@id/minute_1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="2.0px"
android:src="@drawable/time_8" />
< ImageView android:id="@id/minute_0"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:src="@drawable/time_8" />
<
/LinearLayout> //以上是时间显示,时间数字通过调用图片time_0至9,中间冒号调用图片parting_point
<
ImageView android:id="@id/am_pm" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="259.0px"
android:layout_marginTop="39.0px" android:src="@drawable/am" />
//这段调用图片am_zh和pm_zh来显示上午和下午,换图片即可
< /RelativeLayout>
< TextView
android:id="@id/division" android:background="#ff605f5f"
android:layout_width="318.0px" android:layout_height="2.0px"
android:layout_marginLeft="0.0px" android:layout_marginTop="180.0px" />
//定义横线位置与颜色
android:textColor="#ff605f5f" android:id="@id/date"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="24.0px" android:layout_marginTop="193.0px"
android:text="@string/default_date" /> //定义日期位置与颜色
android:textAppearance="?textAppearanceMedium" android:textColor="#ff605f5f"
android:id="@id/status1" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="24.0px"
android:layout_marginTop="4.0dip" android:drawablePadding="4.0dip"
android:layout_below="@id/date" /> //定义星期位置与颜色
android:id="@id/arrow_left" android:visibility="invisible"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="36.0px" android:layout_marginTop="424.0px"
android:src="@drawable/arrow_left" /> //定义向左下指示图片及其位置
android:id="@id/arrow_right" android:visibility="invisible"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="142.0px" android:layout_marginTop="319.0px"
android:src="@drawable/arrow_right" />
//定义向右上指示图片及其位置
android:id="@id/unlock_handler" android:clickable="true"
android:layout_width="480.0px" android:layout_height="480.0px"
android:layout_alignParentRight="true" android:layout_alignParentBottom="true"
/>
< com.android.internal.policy.impl.UnlockAniView
android:id="@id/unlock_animation" android:visibility="gone"
android:layout_width="480.0px" android:layout_height="480.0px"
android:layout_alignParentRight="true" android:layout_alignParentBottom="true"
/>
< ImageView android:id="@id/unlock_icon"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20.0px" android:layout_marginTop="654.0px"
android:src="@drawable/unlock_icon" /> //定义向开锁图标及其位置
android:id="@id/selected_icon" android:visibility="invisible"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="-10.0px" android:layout_marginTop="620.0px"
android:src="@drawable/selected_icon" />
< ImageView
android:id="@id/silence_icon" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="381.0px"
android:layout_marginTop="298.0px" android:src="@drawable/silence_in" />
//定义移动到声音图标后显示的图片及其位置
android:visibility="invisible" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_marginLeft="349.0px"
android:layout_marginTop="272.0px" android:src="@drawable/selected_silence_icon"
/> //定义移动到开锁图标后显示的图片及其位置
android:id="@id/emergencyCallButton" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:src="@null"
android:layout_alignParentRight="true" android:layout_alignParentBottom="true"
/>
< ImageView android:id="@id/emergency_icon"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="409.0px" android:layout_marginTop="688.0px"
android:src="@drawable/emergence_icon" /> //定义声音图标及其位置
<
/com.android.internal.policy.impl.ZteLockScreenView>
--------------------------------------------------------------------------------
4、修改完成后,重新编译framework-res,编译过程中可能会出现一些错误,是因为windows生成的无效图片和语言包定义差异造成的,根据提示修改或删除,因为我们需要的只是编译unlock_dna_typeb.xml,其它错误在这里不必深究。
5、提取修改后重新编译成16进制的unlock_dna_typeb.xml文件,用winrar打开原版的framework-res.apk,把刚提取出来的unlock_dna_typeb.xml拖到res\layout目录下替换原来的文件,把修改后的图片拖到res\drawable-hdpi目录下替换原来的图片。
6、完成上面步逐锁屏显示界面就改好了,注意就算在第4步编译过程中没问题成功编译也不是要使用你重新编译的这个framework-res.apk,因为重新编译出来的文件跟原来的签名不符,只有替换原版才可以。
7、另一种方法,不反编译,直接用16进制编辑器改文字颜色,在编辑器中点击搜索>>查找,输入0800001c(0800001c
应该16进制的定义颜色语句),在找到的0800001c后面8位就是颜色代码,注意在16进制中颜色代码是反相的,如上面第3步中日期颜色代码是ff 60 5f
5f,在这里因该显示为5F 5F 60
FF,按照反序修改这个颜色代码就可以了,从3步中得知我们可以修改res\drawable-hdpi目录下的图片,进行相应修改即可。