GridView的使用与跑马灯效果

一 GridView的使用

        gridView和ListView一样都是一种列表显示的视图控件,ListView是竖直列表的形式来展现,常常用于新闻条目这种.而gridView是可以按照多少列来横向列表的形式来展现的.两者的使用十分相似.

      1.创建GridView的控件

            在你的布局文件中创建gridView控件如下:

             


 

    

  这里指定每列显示3个,同时使用权重来设置高度布局,设置layout_height为0dp来提高性能,verticalSpacing设置竖直间距20dp

 2.Item的样式

    创建gridView内部的每个Item的样式了,新建一个自定义的样式文件home_list_item.xml,写入item的布局,如下

    





    

    

一张图片和一个文字说明,标识一个功能Item的样式LinearLayout 中的android:gravity="center"是为了让item能居中显示

 

 3.编写Activity代码

  我们需要让Item样式动态展示到安卓设备上,需要写代码逻辑来实现,如下:

  

 private String mItems[]= new String[]{"手机防盗", "通讯卫士", "软件管理", "进程管理",
            "流量统计", "手机杀毒", "缓存清理", "高级工具", "设置中心"};
    private int mPics[] = new int[]{ R.mipmap.home_safe,
            R.mipmap.home_callmsgsafe, R.mipmap.home_apps,
            R.mipmap.home_taskmanager, R.mipmap.home_netmanager,
            R.mipmap.home_trojan, R.mipmap.home_sysoptimize,
            R.mipmap.home_tools, R.mipmap.home_settings};



 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        gvHome = findViewById(R.id.gv_home);
        gvHome.setAdapter(new HomeAdapter());
    }


 class HomeAdapter extends BaseAdapter{

        @Override
        public int getCount() {
            return mItems.length;
        }

        @Override
        public Object getItem(int position) {
            return mItems[position];
        }

        @Override
        public long getItemId(int position) {
            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
           View view =  View.inflate(HomeActivity.this,R.layout.home_list_item,null);
            ImageView iv_item = view.findViewById(R.id.iv_item);
            TextView tv_item = view.findViewById(R.id.tv_item);
            iv_item.setImageResource(mPics[position]);
            tv_item.setText(mItems[position]);


            return view;
        }
    }

mItems和mPics标识的是动态展示到设备上的文字和图片,在onCreate方法中,我们创建了HomeAdapter用来填充样式,其中以mItems作为实例,getCount获取mItems总数,getItem和getItemId分别标识当前position的Item和ItemId.重要的是getView,我们在该方法中给每个iv_item和tv_item附上对应的值,因为我们有九个item,所以该方法会调用九次.至此,我们了解了gridVIew的使用.

二.跑马灯的效果

      完成改功能需要singline和ellipsize两个属性,但是仅仅这两个属性还不行,我们需要他能获取焦点,代码如下:

     

 除了刚刚说的两个参数,还有android:focusable="true",android:focusableInTouchMode="true"这两个要设置为true,当然你可以自定义View,在代码里面保证你的focus始终为true.

你可能感兴趣的:(android)