这里只记录一些经常忽略的问题。注意加黑部分
1.如果必须要指定一个固定值,则使用 dp 来作为单位,指定文字大小的时候
使用 sp 作为单位。
2.48dp的物理尺寸约等于9mm,是人的手指比较容易点击到的大小
3.
fragment生命周期
4.动态加载布局的技巧
目录下新建 layout-large 文件夹,在这个文件夹下新建一个布局,也叫做 activity_main.xml,
layout/activity_main 布局只包含了一个碎片,即单页模式,
而 layout-large/activity_main 布局包含了两个碎片,即双页模式。
5.byte转bit Integer.toBinaryString(0x35)
6.Activity管理
public class ActivityCollector {
public static Listactivities = new ArrayList();
public static void addActivity(Activity activity) {
activities.add(activity);
}
public static void removeActivity(Activity activity) {
activities.remove(activity);
}
public static void finishAll() {
for (Activity activity : activities) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
然后创建 BaseActivity 类作为所有活动的父类,代码如下所示:
public class BaseActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ActivityCollector.addActivity(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityCollector.removeActivity(this);
}
}
7.广播里面弹出dialog
public class OfflinBroadcastextends BroadcastReceiver {
@Override
public void onReceive(final Context context, Intent intent) {
AlertDialog.Builder builder =new AlertDialog.Builder(context);
builder.setTitle("warning");
builder.setMessage("你已经被强制下线");
builder.setCancelable(false);
builder.setNegativeButton("ok",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int i) {
ActivityCollector.finishAll();
Intent intent =new Intent(context,
HelloActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);// 重新启动LoginActivity
}
});
builder.setNeutralButton("重新登陆",new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface,int i) {
ActivityCollector.finishAllExcept(HelloActivity.instance);
Intent intent =new Intent(context,
LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
});
AlertDialog alertDialog=builder.create();
alertDialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
alertDialog.show();
}
}