溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

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

發布時間:2020-08-02 15:29:35 來源:網絡 閱讀:232 作者:lyklykkk 欄目:移動開發

第四章 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);

    f. 添加headview和footview(必須在設置適配器之前

    View headview = getLayoutInflater.inflate(R.layout.head,null);

    View footview = getLayoutInflater.inflate(R.layout.foot,null);

    listView.addHeadView(headview);

    listView.addFootView(footview);

    (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對象。例如:

    p_w_picpathSwitcher.setInAnimation(xxx);//設置淡入動畫

    p_w_picpathSwitcher.setOutAnimation(xxx);//設置淡出動畫

    p_w_picpathSwitcher.setFactory(new ViewFactoty(){

        @Override

        public View makeView(){

            ImageView p_w_picpathView = new ImageView(MainActivity.this);

            return p_w_picpathView;

        }

    });

    p_w_picpathSwitcher.setImageResource(xxx);  //設置顯示的圖片

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女