界面下筆記

常用UI的佈局
1.LinearLayout: 線性佈局
用來控制其子View以水平和垂直方式展開
2.RelativeLayout: 相對佈局
用來控制其子view以相對定位的方式進行佈局顯示
3.FrameLayout: 幀佈局
每一個子view都代表一個畫布,後面出現的會覆蓋前面的畫面
通過view的android:layout_gravity屬性來指定子視圖的位置



常用視圖的屬性:

1.視圖的常用屬性



內邊距的屬性:



外邊距的屬性:



只針對RelativeLayout:
相對兄弟視圖定位

同方向對齊屬性:



反對向對齊屬性:



相對於父視圖:



對於權重:



ListView的理解使用






經常使用的適配器:

ArrayAdaptater







經常使用的適配器:
ArrayAdaptater

BaseAdapter: 需要重寫四個方法:



經常使用的適配器:

ArrayAdaptater

四個方法:
1.getCount() : 得到集合的個數
2.getItem() : 根據position得到對應的數據對象
3.getItemId(): 返回對應數據的ItemID
4.getView(): 得到Item視圖對象
其中 convertView可以複用
爲null 沒有複用,我們必須加載佈局,並賦值,不爲null,直接用此視圖對象
後面:找到子view找到對應的數據,設置數據 給listView的Item點擊監聽
listView.setOnItemClickListenner(listener)
item的長按監聽
listView.setOnLongItemClickListener(listener)
--------------優化--------------

第0層:
不優化

經常使用的適配器:
ArrayAdaptater
 每次都會執行getView(),都會執行  convertView=View.inflate(R.layout.XXX);
經常使用的適配器:
ArrayAdaptater

問題:效率太低,再快速滑動時會有卡頓,在數據多的時候甚至內存溢出

第1層:
複用convertView

if(convertView==null){
convertView=View.inflate(R.layout.XXX); //n+1
}
問題: 每次執行getview()都需要執行convertView.findViewByid()得到子view

第二層:
使用ViewHolder,減少findViewByid()的次數 減到n+1次
ViewHolder holder=null;
if(convertView==null){
convertView=View.inflate(R.layout.XXX); //n+1
holder=new ViewHolder();
holder.imageView=(ImageView)convertView.findViewById(xxx);
holder.textView=(TextView)convertView.findViewById(yyy);
convertView.setTag(holder);
}else{

holder=(ViewHolder)convertView.getTag();
}

person p= data.get(position);//之前創建的類
holder.imageView.setImageResource(p.getIco());
holder.textView.setText(p.getName());

static class ViewHolder(){
ImageView imageView;
TextView textView;
}
問題1:
對於聯網獲取列表數據,如果數據量太大(比如超過100000)條甚至更多一次取出來顯示,太慢太消耗流量
問題2.對於聯網獲取列表數據,如果包含圖片數據,每次請求獲取顯示,太慢太耗流量
第三層:
圖片三級緩存處理(LRu算法)
1.內存緩存,優先加載,速度最快
2.本地緩存,次優先加載。速度稍快
3.網絡緩存,最後加載,速度由網絡速度決定(浪費流量)

第4層:
對數據列表進行分頁加載顯示
1.自己做:通過Scroll監聽
listView。setOnScrollListener(scrollListenter),當到達底部時加載下一頁列表數據並顯示
2.使用第三方開源框架:Aandroid-PullToRefresh或其他

Style和Theme
1.style: 多個視圖標籤屬性的集合
好處:複用標籤屬性
目標: 佈局文件中的視圖標籤
Theme: 本質也是style
好處:複用標籤屬性
目標:功能清單文件中整個應用Activity

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章