標籤:progress get can 適應 ext style amd 點擊 new
一、Android控制項
1、TextView
屬性:id、width、height、gravity(對齊)、textSize(文字大小)、textColor(文字顏色)
2、Button
屬性:id、width、height...
監聽器:setOnClickListener()
3、EditText
屬性:id、width、height、hint、android.maxLines(超出部分)
方法:getText()
4、ImageView
屬性:id、width、height、src()
方法:setImageResource()
5、ProgressBar
屬性:id、width、height、style、max(最大值)
方法:控制項可見與不可見:setVisibility(visible、invisible、gone)
6、AlertDialog
方法:setTitle()、setMessage()、setCancelable(false)(不能通過back鍵取消)、setPositiveButton()、setNegatiButton()、show()
7、ProgressDialog
方法:setTitle()、setMessage()、setCancelable()、show()
二、布局
1、LinerLayout
屬性:orientation(當設定為方向是horizontal時,控制項寬度不能為match_parent)、layout_gravity、layout_weight
2、RelativeLayout
屬性:layout_alignParentLeft/Top/Right/bottom、layout_centerInParent
3、FrameLayout
所有控制項都在布局的左上方
4、TableLayout
表格的方式排列控制項
屬性:layout_span(佔據的空間)、stretchColumns(自動適應螢幕寬度)
三、自訂控制項
自訂布局
步驟:1、建立布局
2、在activity_main.xml中插入<include layout="@layout/布局名">即可引入自己建立的布局
3、隱藏原系統中內建的布局
自訂控制項
載入布局title
public class TitleLayout extends LinearLayout{ public TitleLayout(Context context,AttributeSet attrs){
super(context,attrs);
LayoutInflater.from(context).inflate(R.layout.title,this); //動態載入布局title
}}
修改activity_main.xml
<com.example.uicustomviews.TitleLayout amdroid:layout_width="match_parent" android:layout_height="wrap_parent" ></com.example.uicustomvices.TitleLayout>
四、ListView
資料、構建適配器、控制項對象、設定適配器
自訂ListView
1、構建實體類
2、自訂布局
3、自訂配接器,extends ArrayAdapter,傳遞參數包括context、子項布局textViewResource和資料data
4、重寫getView(),在getView()方法中調用getItem()獲得當前實體的執行個體,然後用LayoutInflater將子項載入到布局,擷取控制項對象,並調用setImageResource()和setText()顯示圖片和文字。
最佳化ListView
1、避免重複載入布局
convertView將載入好的布局進行緩衝,便於以後重用。
public View getView(int position,View convertView,ViewGroup parent){ Fruit fruit = getItem(positiong);
View view;
if(convertView == null){
view = Layoutflater.from(getContext()).inflate(resourceId,null);
}else{
viwe = convertView;
}
......}
2、避免重複調用findViewById()
藉助ViewHolder
...... ViewHolder viewHolder;
if(convertView == null){
view = LayoutInflater.from(getContext()).inflate(resourceId,null);
viewHolder = new ViewHolder();
viewHolder.fruitImage = (ImageView)findViewById(R.id.fruit_image);
viewHolder.fruitName= (TextView)findViewById(R.id.fruit_name);
view.setTag(viewHolder); //將viewHolder儲存都view中。
}else{
view = convertView;
viewHolder = (ViewHolder)view.getTag(); //重獲viewHolder
}
viewHolder.fruitImage.setImageResuource(fruit.getImageId());
viewHolder.fruitName.setText(fruit.getName());
ruturn view;
}
class ViewHolder{
ImageView fruitImage;
TextView fruitName;
}
事件監聽
調用setOnItemClickListener()方法,重寫onItemClick(AdapterView<?>parent,View view,int position,long id)方法,通過position來判斷點擊的是哪個item。
Android的UI設計