如何使用GridView实现不同数量显示图片不同的大小
来源:互联网 发布:魔女的条件知乎 编辑:程序博客网 时间:2024/05/17 06:55
有时我们需要在空间看到说说发布一张图片变得很大,多发几张图片就变小了,为了实现这个效果我们就需要Gridview 和它的Adapter
下面是GridView的代码
activity_grid_test.xml
<LineaLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.rindiaco.myweibo.GridTestActivity"> <GridView android:id="@+id/testimggridview" android:layout_width="match_parent" android:layout_height="wrap_content" > </GridView></LineaLayout >
这里的numColumns我们在gridview 的绑定环境再设置
Activity代码
GridTestActivity.java
public class GridTestActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_grid_test); LinkedList<Integer> pictures = new LinkedList<>(); pictures.add(R.drawable.imgid4);// pictures.add(R.drawable.imgid1);// pictures.add(R.drawable.imgid2);// pictures.add(R.drawable.imgid3);// pictures.add(R.drawable.imgid5);// pictures.add(R.drawable.imgid6); GridView testimggridveiw = (GridView) findViewById(R.id.testimggridview); //在这里判断图片的数量,根据图片的数量改变GridView的列数,图片的大小要在Adapter里设置才有效 if (pictures.size()>=3) testimggridveiw.setNumColumns(3); if (pictures.size()==1) testimggridveiw.setNumColumns(1); //绑定自定义的adapter MyImageAdapter imgadapter = new MyImageAdapter(this,pictures); testimggridveiw.setAdapter(imgadapter); }}
现在是Adapter的内容
MyImageAdapter.java
public class MyImageAdapter extends BaseAdapter{ Context context; LinkedList<Integer> imgList; MyImageAdapter(Context context , LinkedList<Integer> imgList){ this.context = context; this.imgList = imgList; } @Override public int getCount() { return imgList.size(); } @Override public long getItemId(int position) { return position; } @Override public Object getItem(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHodler viewHodler; if (convertView == null){ viewHodler = new ViewHodler(); convertView = View.inflate(context,R.layout.image,null); viewHodler.imageView = (ImageView) convertView.findViewById(R.id.imgview); //根据图片的数量设置图片的大小,这里的大小是写的具体数值,也可以获得手机屏幕的尺寸来设置图片的大小 if (imgList.size()==1){ ViewGroup.LayoutParams params = viewHodler.imageView.getLayoutParams(); params.height = 800; params.width = 800; viewHodler.imageView.setLayoutParams(params); }else if (imgList.size()==2){ ViewGroup.LayoutParams params = viewHodler.imageView.getLayoutParams(); params.height = 600; params.width = 600; viewHodler.imageView.setLayoutParams(params); }else{ ViewGroup.LayoutParams params = viewHodler.imageView.getLayoutParams(); params.height = 400; params.width = 400; viewHodler.imageView.setLayoutParams(params); } convertView.setTag(viewHodler); }else{ viewHodler =(ViewHodler) convertView.getTag(); } viewHodler.imageView.setImageResource(imgList.get(position)); return convertView; } class ViewHodler{ ImageView imageView; }}
LayoutParams 是view 的一个内部类,相当于一个Layout的信息包,它封装了Layout的位置、高、宽等信息,它可以设置以下三个值:
1,一个确定的值;
2,FILL_PARENT,即填满(和父容器一样大小);
3,WRAP_CONTENT,即包裹住组件就好。
image.xml
<?xml version="1.0" encoding="utf-8"?><LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:padding="5dp" android:gravity="center" xmlns:android="http://schemas.android.com/apk/res/android" ><ImageView android:id="@+id/imgview" android:layout_width="100dp" android:layout_height="100dp" ></ImageView></LinearLayout>
实现效果
一张图片
两张图片
9张图片
这个功能最核心的想法就是改变GridView的列数和图片的大小
阅读全文
0 0
- 如何使用GridView实现不同数量显示图片不同的大小
- 如何利用TTThumbsViewController实现显示不同数量的图片?
- JSP显示不同大小的图片
- 实现根据图片数量不同的多条目加载
- [VB.NET]怎样在DataGrid控件中显示不同数量的不同图片呢?
- Android不同分辨率图片实际显示大小的计算
- Android不同分辨率图片实际显示大小的计算
- Android不同分辨率图片实际显示大小的计算
- 显示不同大小的字体
- Android应用程序当中GridView显示不同大小图片时Item挤出问题解决办法
- Android应用程序当中GridView显示不同大小图片时Item挤出问题解决办法
- 如何在GridView中设置显示图片的大小
- 在gridview根据不同的状态显示不同的颜色
- 自定义类似Gridview 不同行列数不同 的显示控件
- GridView 显示不同风格的布局
- 如何在ListCtrl中显示不同的图片
- 让Toolbar显示大小不同的ICONs
- label显示不同大小、颜色的字符串
- 大数据伪分布式环境搭建hadoop+zookeeper+hive+sqoop+hbase
- 剑指offer——26.二叉搜索树与双向链表
- 日期类定义
- 16.Hadoop架构再探讨第1部分
- java无法调用webservice
- 如何使用GridView实现不同数量显示图片不同的大小
- 分数化小数(decimal)
- 八皇后问题
- C#Http服务器报HttpListener拒绝访问异常解决方法
- Vue自定义事件
- 阶乘取余打表,阶乘逆元打表
- CRC32和CRC8校验代码,C语言版
- 关于APUE 图8-8 孤儿进程例子
- 转发和重定向的区别