首页 > 代码库 > Android开发小结(一)

Android开发小结(一)

一、fill_parent、match_parent、wrap_content的区别:

  1. fill_parent:将强制性地使构件扩展,以填充布局单元内尽可能多的空间。
  2. wrap_content:将强制性地使视图扩展以显示全部内容,大体等同于设置 Windows控件的Autosize属性为True。
  3. 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);

四、常用方法:

  1. 获取屏幕的宽/高: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之间传递参数:

  1. 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. 其中,可以传递任意类型的数据。
  2. Activity2接收参数chuanzhi,那么在Activity2中定义:
    Intent intent = getIntent();
    Bundle data = http://www.mamicode.com/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来绑定数据

Android开发小结(一)