1. 程式人生 > >介面下筆記(2018.5.20)

介面下筆記(2018.5.20)

常用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