码迷,mamicode.com
首页 > 移动开发 > 详细

Android学习笔记—第四章 Android开发组件2

时间:2015-05-12 19:08:44      阅读:138      评论:0      收藏:0      [点我收藏+]

标签: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

标签:android   图片   适配器   开发   

原文地址:http://linyingkun.blog.51cto.com/2393912/1650678

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!