12.自定义组合控件的属性
通过自定义组合控件类的全路径名定义组合控件的同时,还可以添加自定义控件的属性,添加属性的话就要在该布局文件中添加自定义的命名空间,格式为:
xmlns:unicair="http://schemas.android.com/apk/res/com.uc.mobilesafe(包名)"
属性的定义格式如:
<span style="font-size:18px;"> <com.uc.mobilesafe.ui.SettingItemView android:id="@+id/siv_update" android:layout_width="wrap_content" android:layout_height="wrap_content" unicair:desc_off="自动更新已关闭" unicair:desc_on="自动更新已打开" unicair:title="设置是否自动更新" > </com.uc.mobilesafe.ui.SettingItemView></span>
<span style="font-size:18px;"><declare-styleable name="SettingItemView"> <attr name="title" format="string" /> <attr name="desc_off" format="string" /> <attr name="desc_on" format="string" /> </declare-styleable></span>
13.自定义对话框
系统自带的对话框都是没有输入框的,为了设置密码,我们可以自定义带输入框的对话框:
自定义对话框布局文件,然后通过View.inflate();将布局文件转换成View对象,再调用对话框构造器builder的setView(view)方法构造出该对话框,然后再builder.show()给show出来。
对话框在低版本上显示效果不佳,可以将背景设置为白色,并且在创建对话框时用:
dialog1 = builder.create(); dialog1.setView(view,0,0,0,0); dialog1.show();
14.MD5算法加密
算法步骤:1.用每个byte去和11111111做与运算,得到的是int类型的值:byte & 0xff
2.把int类型转换成16进制并返回String类型
3.不满八个二进制位就补全。
<span style="font-size:18px;">public static String getMd5(String password) { try { // 得到一个信息摘要器的实例 MessageDigest digest = MessageDigest.getInstance("md5"); byte[] result = digest.digest(password.getBytes()); StringBuffer buffer = new StringBuffer(); for (byte b : result) { // 与运算 int num = b & 0xff; // 转换成16进制 String str = Integer.toHexString(num); // 补全不满8个二进制位 if (str.length() == 1) { buffer.append("0"); } buffer.append(str); } return buffer.toString(); } catch (NoSuchAlgorithmException e) { e.printStackTrace(); return ""; } }</span>
参考API,App Resources-->Resource Types-->Drawable中的State List下.
在res目录下创建drawable目录,在该目录下创建button.xml文件。