zoukankan      html  css  js  c++  java
  • Android_GridView

    Android_GridView

      gridview与listview大同小异,gridview呈现的是九宫格的布局,listview呈现的是列表布局

    gridview的一些特殊属性:

    1.android:numColumns=”auto_fit”   //GridView的列数设置为自动

    2.android:columnWidth=”90dp "       //每列的宽度,也就是Item的宽度

    3.android:stretchMode=”columnWidth"//缩放与列宽大小同步

    4.android:verticalSpacing=”10dp”          //两行之间的边距

    5.android:horizontalSpacing=”10dp”      //两列之间的边距 

    6.android:cacheColorHint="#00000000" //去除拖动时默认的黑色背景

    7.android:listSelector="#00000000"        //去除选中时的黄色底色

    8.android:scrollbars="none"                   //隐藏GridView的滚动条

    9.android:fadeScrollbars="true"             //设置为true就可以实现滚动条的自动隐藏和显示

    10.android:fastScrollEnabled="true"      //GridView出现快速滚动的按钮(至少滚动4页才会显示)

    11.android:fadingEdge="none"                //GridView衰落(褪去)边缘颜色为空,缺省值是vertical。(可以理解为上下边缘的提示色)

    12.android:fadingEdgeLength="10dip"   //定义的衰落(褪去)边缘的长度

    13.android:stackFromBottom="true"       //设置为true时,你做好的列表就会显示你列表的最下面

    14.android:transcriptMode="alwaysScroll" //当你动态添加数据时,列表将自动往下滚动最新的条目可以自动滚动到可视范围内

    15.android:drawSelectorOnTop="false"  //点击某条记录不放,颜色会在记录的后面成为背景色,内容的文字可见(缺省为false)

     Demo环节:

    一般步骤:gridview布局  --> item布局 -->数据源-->   适配器(将数据与item绑定)  --> 为gridview添加适配器

    使用gridview加载网络图片:

    主布局xml:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent">
     <GridView
         android:id="@+id/one_gradView"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
         android:columnWidth="70dp"
         android:numColumns="auto_fit"
         android:verticalSpacing="20dp"
         android:horizontalSpacing="20dp"
         android:stretchMode="columnWidth"
         android:gravity="center"/>
    </RelativeLayout>

     item布局

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent" android:layout_height="match_parent"
        android:orientation="vertical"
        >
        <ImageView
            android:id="@+id/three_img"
            android:layout_width="150dp"
            android:layout_height="150dp" />
    </LinearLayout>

    数据源:通过异步下载图片获取数据

     //网络图片地址
        private void initData() {
            imgList = new ArrayList<>();
            imgList.add("http://img5.duitang.com/uploads/item/201406/26/20140626164837_dzKds.jpeg");
            imgList.add("http://img2.imgtn.bdimg.com/it/u=3980629563,3881837630&fm=21&gp=0.jpg");
            imgList.add("http://img5q.duitang.com/uploads/item/201505/08/20150508155052_XJaNW.jpeg");
            imgList.add("http://img4.duitang.com/uploads/item/201407/02/20140702105736_FdN5P.jpeg");
            imgList.add("http://img2.imgtn.bdimg.com/it/u=2866652161,3841912673&fm=21&gp=0.jpg");
            imgList.add("http://img4.imgtn.bdimg.com/it/u=883757693,2063816225&fm=21&gp=0.jpg");
            imgList.add("http://cdn.duitang.com/uploads/item/201309/26/20130926110955_QtUdX.jpeg");
            imgList.add("http://zjimg.5054399.com/allimg/160815/14_160815161625_9.jpg");
            imgList.add("http://i-7.vcimg.com/trim/09ce7067d2467c54cf05bbd271ee3ec8430415/trim.jpg");
    
        }
        //下载网络图片
        public Bitmap downImg(String urlPath){
    
            try {
                URL url = new URL(urlPath);
                HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
                urlConnection.setConnectTimeout(6000);
                urlConnection.setDoInput(true);
                urlConnection.connect();
                InputStream inputStream = urlConnection.getInputStream();
                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                inputStream.close();
                return bitmap;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            return null;
        }
    
    
    
    
    
        //创建AsycnTask加载图片
        public class MyAsycnTask extends AsyncTask<String,String,String>{
            ThreeAdapter threeAdapter;
    
            public MyAsycnTask(ThreeAdapter threeAdapter) {
                this.threeAdapter = threeAdapter;
            }
    
            @Override
            protected String doInBackground(String... strings) {
                for (int i = 0; i <imgList.size() ; i++) {
                    bitmapList.add(downImg(imgList.get(i)));
                    publishProgress();
                }
                return null;
            }
    
            @Override
            protected void onProgressUpdate(String... values) {
                super.onProgressUpdate(values);
                //通知适配器更新数据
                threeAdapter.notifyDataSetChanged();
            }
        }

    适配器:

    public class ThreeAdapter extends BaseAdapter {
        private Context context;
    
        private List<Bitmap> bitmapList;
        public ThreeAdapter(Context context,List<Bitmap> bitmapList1) {
            this.context = context;
            this.bitmapList = bitmapList1;
        }
        @Override
        public int getCount() {
            return bitmapList.size();
        }
    
        @Override
        public Object getItem(int i) {
            return bitmapList.get(i);
        }
    
        @Override
        public long getItemId(int i) {
            return i;
        }
    
        @Override
        public View getView(int i, View view, ViewGroup viewGroup) {
            viewHodler viewHodler = null;
            if (view == null){
                view = View.inflate(context, R.layout.three_item,null);
                viewHodler = new viewHodler();
                viewHodler.imageView = view.findViewById(R.id.three_img);
                view.setTag(viewHodler);
            }else {
                viewHodler = (ThreeAdapter.viewHodler) view.getTag();
            }
            //如果图片无法加载则显示默认图片
            if (bitmapList.get(i) == null)
            {
                viewHodler.imageView.setImageResource(R.drawable.ic_launcher_background);
            }else {
                viewHodler.imageView.setImageBitmap(bitmapList.get(i));
            }
    
            return view;
        }
        //辅助类,优化缓存
        public class viewHodler{
            ImageView imageView;
        }
    }

    主要实现

    public class ThreeActivity extends AppCompatActivity {
        private List<Bitmap> bitmapList;//存放图片
        protected List<String> imgList;//存放图片网络地址
        protected GridView gridView;
    
        @Override
        protected void onCreate(@Nullable Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.second_layout);
            gridView = findViewById(R.id.scond_graidView);
            bitmapList = new ArrayList<>(10);
            initData();
            ThreeAdapter threeAdapter = new ThreeAdapter(this, bitmapList);
            MyAsycnTask myAsycnTask = new MyAsycnTask(threeAdapter);
            myAsycnTask.execute();
            gridView.setAdapter(threeAdapter);
    
        }
    }

    获取系统应用信息:

    自定义应用信息类AppInfo:

    /**
     * 获取应用信息类
     */
    public class AppInfo {
        //应用名称
        private String appName;
        //应用包名
        private String packgeName;
        //版本名称
        private String versionName;
        //版本号
        private int versionCode;
        //应用图标
        private Drawable appIcon;
    
        public String getAppName() {
            return appName;
        }
    
        public void setAppName(String appName) {
            this.appName = appName;
        }
    
        public String getPackgeName() {
            return packgeName;
        }
    
        public void setPackgeName(String packgeName) {
            this.packgeName = packgeName;
        }
    
        public String getVersionName() {
            return versionName;
        }
    
        public void setVersionName(String versionName) {
            this.versionName = versionName;
        }
    
        public int getVersionCode() {
            return versionCode;
        }
    
        public void setVersionCode(int versionCode) {
            this.versionCode = versionCode;
        }
    
        public Drawable getAppIcon() {
            return appIcon;
        }
    
        public void setAppIcon(Drawable appIcon) {
            this.appIcon = appIcon;
        }
    }

    获取应用信息方法:

     /**
         * 获取app信息方法
         */
        public List<AppInfo> getAppList(){
            List<AppInfo> list  = new ArrayList<>();
            //获取包管理器
            PackageManager packageManager = getPackageManager();
            //获取包信息集合
            List<PackageInfo> installedPackages = packageManager.getInstalledPackages(0);
    
            for (int i = 0; i <installedPackages.size() ; i++) {
                PackageInfo packageInfo = installedPackages.get(i);
                //实例化AppInfo
                AppInfo appInfo = new AppInfo();
                //获取应用名称
                appInfo.setAppName(packageInfo.applicationInfo.loadLabel(packageManager).toString());
                //获取应用图标
                appInfo.setAppIcon(packageInfo.applicationInfo.loadIcon(packageManager));
                //获取包名
                appInfo.setPackgeName(packageInfo.packageName);
                //获取版本号
                appInfo.setVersionCode(packageInfo.versionCode);
                //获取版本名称
                appInfo.setVersionName(packageInfo.versionName);
                //判断是否为用户自定义安装程序
                if ((packageInfo.applicationInfo.flags&ApplicationInfo.FLAG_SYSTEM) == 0){
                    list.add(appInfo);
                }
            }
            return list;
        }

     总体来说gridview的用法与listview差不多,创建布局,获取数据源,通过适配器将数据源与布局绑定在显示在页面上

  • 相关阅读:
    控制测试与实质性程序的关系
    【2020-02-23】一个生活视角的触发
    工作,拼的都是脏和累
    【2020-02-22】让偶然不再偶然
    【2020-02-21】当心自己的想象力
    【2020-02-20】想清楚,自己在为谁服务
    静态化与伪静态化的区别
    e3商城_day04
    e3商城_day03
    服务器,操作系统,虚拟机,虚拟主机,IP地址
  • 原文地址:https://www.cnblogs.com/conglingkaishi/p/9389258.html
Copyright © 2011-2022 走看看