android 布局总结

一、LinearLayout、RelativeLayout的重要属性


布局不同,相近的功能所用的属性也不尽相同

二、设置背景色问题

在图片focus、click时需要图片变换,我们可能经常会用到selector。

平常的ImageView获焦状态可用android:state_focused="true"表示。GridView获焦可用android:state_selected="true"表示。点击事件都为android:state_pressed="true"。

ImageView与ImageButton的引用含selector的xml文件也略有不同。 ImageView不管是用src或background的方式引用都需添加clickable="true"或focusable="true"属性,而ImageButton用src或background的方式引用都无需添加。

三、设置大图片背景优化

public void setBackground(){
	LinearLayout appLayout = (LinearLayout)findViewById(R.id.allAppLayout);
	InputStream is = this.getResources().openRawResource(R.drawable.app); 
        BitmapFactory.Options options=new BitmapFactory.Options(); 
        options.inJustDecodeBounds = false; 
        options.inSampleSize = 2;   //width,hight设为原来的二分一 
        rawBitmap =BitmapFactory.decodeStream(is,null,options); 
        bitDrawable = new BitmapDrawable(getResources(), rawBitmap);
        appLayout.setBackground(bitDrawable);
}
此法先将图片压缩为二分之一,损失像素,然后再填充屏幕。

四、android布局优化

1.推荐使用的布局


使用量

      

2. android布局原则

(1)尽量多使用LinearLayout和RelativeLayout,不要使用AbsoluteLayout

(2)在布局层次一样的情况下,建议使用LinearLayout代替RelativeLayout,因为LinearLayout性能要稍高一点。

(3)将可复用的组件抽取出来并通过include标签使用

(4)使用ViewStub标签来加载一些不常用的布局

ViewStub标签同include标签一样可以用来引入一个外部布局,不同的是,ViewStub引入的布局默认不会扩张,既不会占用显示也不会占用位置,从而在解析Layout时节省cpu和内存。可人为控制合适把外部布局加载进来,如一般是隐藏的,当点击某个按钮显示。

(5)使用merge标签减少布局的嵌套层次

场景一:布局根节点是FrameLayout且不需要设置background或padding等属性,可用merge代替。

场景二:某布局作为子布局被其他布局include时,使用merge当作该布局的定节点,这样在被引用时顶节点会被自动忽略。











发布了102 篇原创文章 · 获赞 14 · 访问量 13万+

猜你喜欢

转载自blog.csdn.net/fofu33/article/details/40040145