Android學習筆記—第四章 Android開發組件2

來源:互聯網
上載者:User

標籤:android   圖片   適配器   開發   

第四章 Android開發組件2

  1. 列表類組件

    (1)ListView組件:以垂直列表的形式列出需要顯示的清單項目

    相關屬性:

    a. android:divider  用於為列表視圖設定分隔條,可以用顏色或者圖片資源

    b. android:dividerHeight  設定分隔條的高度

    c. android:entries  通過數組資源為ListView指定清單項目

    d. android:footerDividersEnabled  設定是否在footerView之前繪製分隔條,預設為true。

    e. android:headerDividersEnabled  設定是否在headerView之後繪製分隔條,預設為true。

    (2)ListView使用步驟:

    a. 拖入一個ListView控制項,高度改為match_parent

    b. 建立一個布局xml檔案,設定每行顯示的樣式

    c. 建立一個類MyAdapter繼承BaseAdapter

    getView()方法:設定每行資料顯示及每行顯示樣式

    getCount()方法:顯示的行數,當傳回值為0時,getView()方法不會被調用,顯示為空白

    d. 建立配接器物件

    MyAdapter adapter = new MyAdapter();

    e. 為ListView設定適配器

    listView.setAdapter(adapter);

    (3)ListView的最佳化

    上下滑動會不斷觸發getview()方法

    解決方案:複用行布局,減少控制項尋找

    //建立一個類,聲明幾個變數(變數類型和數量與布局xml檔案中包含的控制項一致)

    class ViewHolder{

        View view1;

        View view2;

        ......

    }

    //聲明成員變數

    View inflate;

    ViewHolder  holder;

    //最佳化

    if(convertView==null){

        //建立一個ViewHolder對象

        //得到布局轉換器對象

        LayoutInflater inflater = getLayoutInflate();

        //將布局xml檔案轉換為布局對象

        inflate = inflater.inflate(R.layout.listItem,null);

        //尋找控制項

        holder.view1 = inflate.findViewById(R.id.view1);

        holder.view2 = inflate.findViewById(R.id.view2);

        //設定一個標籤

        infalte.setTag(holder);

    }else{

        //替換、複用行布局

        inflate=convertView;

        holder = (ViewHolder)inflate.getTag();

    }

    //依據控制項類型設定控制項內容

    ......

    (3)資料更新

    資料發生變化時,由適配器通知listview更新資料

    adapter.notifyDataSetChanged();

    (4)ListView的點擊事件

    a. 設定點擊監聽

    listview.setOnItemClickListener(new OnItemClickListener){

        @Override

        public void onItemClick(AdapterView<?> parent,View view,int position,long id){

            ......

        }

    }

    備忘:當行布局中存在搶佔焦點的控制項時(如Button),ListView的點擊會失效

    解決方式:

    在行布局中搶佔焦點的控制項上設定屬性:android:focusable = "false"

    在行布局中設定讓所有能搶佔焦點的控制項都不搶佔焦點

    android:descendantFocusability = "blocksDescendants"

    b. 設定長按點擊監聽

    listview.setOnItemLongClickListener(new OnItemLongClickListener){

        @Override

        public void OnItemLongClick(AdapterView<?> parent,View view,int position,long id){

            ......

        }

    }

  2. Spinner組件:列表選擇框相當於網頁中的常見的下拉式清單方塊

    getSelectedItem():擷取列表選擇框的選中值

    OnItemSelectedListener:設定清單項目的選中事件監聽。

    setDropDownViewResource():為適配器設定列表框下拉時的選項樣式

  3. Gallery組件:畫廊視圖,可按水平方向顯示內容,並可用手指直接拖動圖片移動,一般用來瀏覽               圖片。通常用BaseAAdapter適配器為Grallery組件提供要顯示的圖片。

  4. ImageSwitcher組件:圖片切換器,用於實作類別似於Windows下“Windows相片檢視器”中的“上一                      張”、“下一張”的功能。使用ImageSwitcher必須實現                                      ViewSwitcher.ViewFactory介面,通過makeView()方法建立用於顯示圖片的                      ImageView對象。例如:

    imageSwitcher.setInAnimation(xxx);//設定淡入動畫

    imageSwitcher.setOutAnimation(xxx);//設定淡齣動畫

    imageSwitcher.setFactory(new ViewFactoty(){

        @Override

        public View makeView(){

            ImageView imageView = new ImageView(MainActivity.this);

            return imageView;

        }

    });

    imageSwitcher.setImageResource(xxx);  //設定顯示的圖片

Android學習筆記—第四章 Android開發組件2

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.