尚學堂【官網】-西安Java培訓|c++培訓|Android培訓|安卓培訓|java視頻教程|軟件工程師|-西安雁塔尚學堂計算機學校
Android安卓教程  尚學堂首頁Java學院Android安卓教程

UI開發中所用到特殊方法

www.zyopwk.live 發布人:java  |  來自:本站  |  發布時間:2017-08-23 10:51:00  |  點擊次數:2980

  UI開發中所用到特殊方法

  在Android的界面開發,對于一些控件中的使用會使用到特殊的方法和機制。在界面開發部分的學習中,這些方法需要特別注意?,F將其中的部分總結出來,便于查詢。

  1. 自定義對話框

  Android中對話框控件的定義和使用有些與眾不同,需要利用AlertDialog.Builder類設置對話框的各屬性,然后調用其creat()方法得到Dialog對象。調用Dialog對象的show()方法顯示對話框。

  自定義對話框的原理是利用Builder對象的setView()方法,將一個View對象傳入其中,這個View對象來自于自定義的作為對話框中布局的布局文件。自定義的View對象通過LayoutInflater對象獲得。示例代碼如下:

  //獲得布局解析 LayoutInflater factory=LayoutInflater.from(three.this); //將布局的XML文件解析成為view對象 final View dia=factory.inflate(R.layout.dialog, null); //獲得對話框類內部類builder的對象 AlertDialog.Builder builder=new AlertDialog.Builder(three.this); //在builder對象中設置對話框的屬性 builder.setTitle("登錄提示"); builder.setView(dia); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub three.this.displayToast("登錄成功!"); } }); builder.setNegativeButton("退出", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { // TODO Auto-generated method stub three.this.finish(); } }); //初始化對話框 Dialog dialog=builder.create(); //顯示對話框 dialog.show();

  2. BaseAdapter類的使用

  前面曾經使用過AraryAdapter、ListAdapter和SimpleCurAdapter,它的使用都很簡單,就是獲得適配器對象然后將數據源和布局參數作為構造方法的參數傳遞進去就行。以上三個類都是BaseAdapter的子類,自定義一個繼承了BaseAdapter類的子類同樣可以實現以上三個類的功能。具體代碼如下:

  public class myAdapter extends BaseAdapter{ private Context context; ArrayList> arrlist=new ArrayList>(); HashMap map1 = new HashMap(); HashMap map2 = new HashMap(); HashMap map3 = new HashMap(); public myAdapter(Context context){ map1.put("name","張三"); map1.put("id", "1"); map2.put("name","李四"); map2.put("id", "2"); map3.put("name","王五"); map3.put("id", "3"); arrlist.add(map1); arrlist.add(map2); arrlist.add(map3); this.context=context; } @Override public int getCount() { // TODO Auto-generated method stub return arrlist.size(); } @Override public Object getItem(int position) { // TODO Auto-generated method stub return position; } @Override public long getItemId(int position) { // TODO Auto-generated method stub return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { // TODO Auto-generated method stub LayoutInflater layoutInf=LayoutInflater.from(context); View view=layoutInf.inflate(com.skip.R.layout.lt, null); HashMap map=arrlist.get(position); TextView tx1=(TextView)view.findViewById(com.skip.R.id.widget28); tx1.setText(map.get("name")); TextView tx2=(TextView)view.findViewById(com.skip.R.id.widget29); tx2.setText(map.get("id")); return view; } }

  在上面的類中,數據源是寫死在類中的,可以是List,Cursor和數組,而在getView中是將數據綁定在控件上的操作,返回View對象。在子類中,重點就是實現getView()方法和數據源的定義,其他的方法直接按照方法功能返回所需數據即可。初始化該對象,并將上面的對象直接作為控件的適配器就可以直接使用。

  上段代碼等同于如下代碼:

  ArrayList> arrlist; arrlist=new ArrayList>(); HashMap map1 = new HashMap(); HashMap map2 = new HashMap(); HashMap map3 = new HashMap(); map1.put("name","張三"); map1.put("id", "1"); map2.put("name","李四"); map2.put("id", "2"); map3.put("name","王五"); map3.put("id", "3"); arrlist.add(map1); arrlist.add(map2); arrlist.add(map3); SimpleAdapter sada=new SimpleAdapter(this, AdapyerAxarrlist, android.R.layout.simple_list_item_2, new String[]{"name","id"}, new int[]{android.R.id.text2,android.R.id.text1}); ListView ls = (ListView)findViewById(R.id.list); ls.setAdapter(sada);

  BaseAdapter作為抽象的父類,其數據源可以是任何一種,數據源和布局都是=可以自定義。SimpleAdapte作為BaseAdapter的子類,具有特定功能,它的數據源特定并由外部傳入,使用起來相對方便。

  但是,BaseAdapter具有自己的優勢,那就是可以將媒體文件作為數據源元素加載到適配器并更加詳細的定義其布局,這是其子類無法做到的。代碼如下:

  public class ImageAdapter extends BaseAdapter { // 定義Context private Context mContext; // 定義整型數組 即圖片源 private Integer[] mImageIds = { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4, R.drawable.img5, R.drawable.img6, R.drawable.img7, R.drawable.img8, }; // 聲明 ImageAdapter public ImageAdapter(Context c) { mContext = c; } // 獲取圖片的個數 public int getCount() { return mImageIds.length; } // 獲取圖片在庫中的位置 public Object getItem(int position) { return position; } // 獲取圖片ID public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { ImageView imageview = new ImageView(mContext); // 給ImageView設置資源 imageview.setImageResource(mImageIds[position]); // 設置布局 圖片120×120顯示 imageview.setLayoutParams(new Gallery.LayoutParams(120, 120)); // 設置顯示比例類型 imageview.setScaleType(ImageView.ScaleType.FIT_CENTER); return imageview; } }

  使用BaseAdapter類對于那些需要詳細定義布局的數據源具有很好的操作性,特別是對于圖片這類屬性較多的數據,一般在使用適配器時選擇BaseAdapter。

  3. ImageSwitcher的使用

  ImageSwitcher可以實現圖片的切換效果,它的使用并非很難,但是容易忽略ImageSwitch的對象需要利用setFactory()方法設置轉換器每一頁的View。在這個設置完成以后才可以添加數據源。使用代碼如下:

  imageswi=(ImageSwitcher)findViewById(R.id.imgswi); imageswi.setFactory(new ViewSwitcher.ViewFactory() { //定義源的View @Override public View makeView() { // TODO Auto-generated method stub return new ImageView(three.this); } }); //必須在設置了Factory之后才能設置圖片源 imageswi.setImageResource(imagelist[index]);

當前文:UI開發中所用到特殊方法
上一頁:使用ListView顯示數據
下一頁:Google谷歌Android安卓智能手機操作系統權限百科大全
在線報名(*為必填項)
云南快乐十分开奖走势图