一、fill_parent、match_parent、wrap_content的区别:
- fill_parent:将强制性地使构件扩展,以填充布局单元内尽可能多的空间。
- wrap_content:将强制性地使视图扩展以显示全部内容,大体等同于设置 Windows控件的Autosize属性为True。
- match_parent:Android2.2中match_parent和fill_parent是一个意思 .两个参数意思一样,match_parent更贴切,于是从2.2开始两个词都可以用,那么如果考虑低版本的使用情况你就需要用fill_parent了。
二、界面更新问题:
为安全起见,Android中是不允许子线程修改主线程的UI的,因此如果要通过子线程修改主线程有关UI只能通过Handler。举例:
1.主线程中接收子线程传递来的参数值,根据该值来确定如何修改UI。(假设主线程所在的Activity名为mActivity)
public class MyHandler extends Handler{
public MyHandler (){
}
public MyHandler (Looper L){
}
public void handleMessage(Message msg){super.handleMessage(msg); Bundle b = msg.getData(); switch(msg.what){ case 0: int shoudao = b.getInt("index"); system.out.println("来自子线程的值=" + shoudao); break; case ……; }
}
}
2.子线程向主线程传递Message。
public void sendHandlerMessage(){
Message msg = new Message();
Bundle b = new Bundle();// 存放数据
msg.what = 0;//设置msg的what值,主线程根据该值来判断接收的消息是来自谁
b.putInt(“index”, 15455);
msg.setData(b);
mActivity.myHandler.sendMessage(msg);
}
三、常用getWindow().setFlags方法:
//设置窗体全屏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
//设置窗体始终点亮
getWindow().setFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON,
WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
//设置窗体背景模糊
getWindow().setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,
WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
四、常用方法:
- 获取屏幕的宽/高:getWindowManager().getDefaultDisplay().getWidth()、getWindowManager().getDefaultDisplay().getHigth().
五、动态改变布局的宽度、高度:
假设:1. 被改变的布局为main_leftlist_layout
2. 其父布局的属性为LinearLayout(特别注意)
那么设置其宽度、高度的代码如下:
main_leftlist_layout.setLayoutParams(new LinearLayout.LayoutParams(55, LinearLayout.LayoutParams.WRAP_CONTENT));
六、代码中添加新布局:
//布局规则r1、r2
//在layout1中添加两个对象img、tv
//img遵循规则r1,tv遵循规则r2
ImageView img = new ImageView(Activity.this);
TextView tv = new TextView(Activity.this);
LinearLayout.LayoutParams r1 = new LinearLayout.LayoutParams(new LayoutParams(18, 18));
LinearLayout.LayoutParams r2 = new LinearLayout.LayoutParams(new LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT));
layout1.addView(img, r1);
layout1.addView(tv, r2);
七、在两个Activity之间传递参数:
- Activity1将参数传递给Activity2,那么在Activity1中定义:
String str = “hello”;
Bundle info = new Bundle();
info.putString(“chuanzhi”, str);
Intent intent = new Intent(Activity1.this, Activity2.class);
intent.putExtras(info);
startActivity(intent);
这样,Activity1将hello通过chuanzhi这个变量传递给Activity2. 其中,可以传递任意类型的数据。 - Activity2接收参数chuanzhi,那么在Activity2中定义:
Intent intent = getIntent();
Bundle data = intent.getExtras();
String shoudao = (String)data.getSerializable(“chuanzhi”);
system.out.println(“Activity1传来的字符串为:” + shoudao);
八、有关Dialog:
1.设置Dialog的宽度、高度、对齐方式等:
Dialog start_dialog = new Dialog(context, R.style.MyDialog);
Window window = start_dialog.getWindow();
start_dialog.setCanceledOnTouchOutside(true);
start_dialog.setContentView(take_audio_start);
WindowManager.LayoutParams lp = window.getAttributes();
lp.width = 200;
lp.height = 300;
lp.gravity = Gravity.BOTTOM;
window.setAttributes(lp);
start_dialog.show();
九、intent中putExtras和putExtra的区别:
public Intent putExtra (String name, parcelable value)
设置方法 intent.putExtra(“aaa”, “bbbb”);
获取方法 this.getIntent().getCharSequenceExtra(“aaa”)
public Intent putExtras (Bundle extras)
设置方法
Bundle bd = new Bundle();
bd.putString(“aaa”,“bbbb”);
intent.putExtras(bd);
获取方法
Bundle bd=this.getIntent().getExtras();
bd.getString(“aaa”));
总结:带s的得通过个Bundle来绑定数据