360手机卫士项目每天总结。
开源项目导入:把jar包复制到lib目录下。
android:visibility="invisible"
android:visibility="gone"
两个的区别。handler几个常用的api:
Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case:
break;
default:
break;
}
Message msg = Message.obtain();
msg.what = ? msg.obj = ?
handler.sendMessage(msg);
拿包名和版本号
PackageManager packageManager = getPackageManager();
PackageInfo packageInfo = packageManager.getPackageInfo(getPackageName(), 0);
int versionCode = packageInfo.versionCode;
String versionName = packageInfo.versionName;URL知识总结
跳转到系统安装页面(packageinstall)
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setDataAndType(Uri.fromFile(arg0.result),
"application/vnd.android.package-archive");TextView中可以设置一个ellipsize属性,作用是当文字长度超过textview宽度时的显示方式:
android:ellipsize=”start”—–省略号显示在开头 “…pedia”
android:ellipsize=”end”——省略号显示在结尾 “encyc…”
android:ellipsize=”middle”—-省略号显示在中间 “en…dia”
android:ellipsize=”marquee”–以横向滚动方式显示(需获得当前焦点时)
对于使用marquee即滚动显示方式的,需要当前textview获得焦点才会滚动。所以有时可能因为实际需要,textview未获得焦点或者需要多个textview都同时滚动显示时,可以采用以下办法:
因为判断textview是否处于focused状态是通过它本身isFocused()方法,这样只要此方法返回为true时,即认为处于focused的状态,就可以滚动啦。所以可以通过继承TextView类,并override isFocused()方法来控制是否滚动咯。
另外如果是组合View,外层layout需要加入以下属性来保证focus状态的传递:addStatesFromChildren=”true”
public class FocusedTextView extends TextView {
// 有style样式的话会走此方法
public FocusedTextView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
}
// 有属性时走此方法
public FocusedTextView(Context context, AttributeSet attrs) {
super(context, attrs);
}
// 用代码new对象时,走此方法
public FocusedTextView(Context context) {
super(context);
}
/**
* 表示有咩有获取焦点
*
* 跑马灯要运行,首先调用此函数判断是否有焦点,是true的话,跑马灯才会有效果 所以我们不管实际上textview有没有焦点,
* 我们都强制返回true, 让跑马灯认为有焦点
*/
@Override
public boolean isFocused() {
return true;
}
}
或者这样子:在<TextView>里
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
- AlertDialog.builder(可扩展)
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final AlertDialog dialog = builder.create();
View view = View.inflate(this, R.layout.dailog_input_password, null);
// dialog.setView(view);// 将自定义的布局文件设置给dialog
dialog.setView(view, 0, 0, 0, 0);// 设置边距为0,保证在2.x的版本上运行没问题
dialog.dismiss();
- md5加密:
public static String encode(String password) {
try {
MessageDigest instance = MessageDigest.getInstance("MD5");// 获取MD5算法对象
byte[] digest = instance.digest(password.getBytes());// 对字符串加密,返回字节数组
StringBuffer sb = new StringBuffer();
for (byte b : digest) {
int i = b & 0xff;// 获取字节的低八位有效值
String hexString = Integer.toHexString(i);// 将整数转为16进制
if (hexString.length() < 2) {
hexString = "0" + hexString;// 如果是1位的话,补0
}
sb.append(hexString);
}
return sb.toString();
- 9png
通过黑色边线来描述图片的拉伸情况和填充文字的方式
上边线表示图片水平拉伸, 左边线表示垂直拉伸
右边线表示垂直填充区域, 下边线表示水平填充区域