关于gridview多item选中放大问题。
来源:互联网 发布:大旗软件 编辑:程序博客网 时间:2024/05/23 11:27
在前几天开发中遇到一个问题,就是要求选中放大gridview的item。然后就开始重写gridview ,发现按照一般的做法会发现空指针异常的现象。以下是我一开始做的方法:
@Override protected int getChildDrawingOrder(int childCount, int i) { if (position != -1) { if (i == childCount - 1) return position; if (i == position){ return childCount - 1; } } return i; }
重写gridview,的绘制顺序,把选中的item和最后一个绘制的item调换一下顺序。
public void setScaleAnimation(View view,int position) {AnimationSet animationSet = new AnimationSet(true);if (manimationSet != null && manimationSet != animationSet) {manimationSet.setFillAfter(false);manimationSet.cancel();}ScaleAnimation scaleAnimation;if (position % 4 == 3){scaleAnimation = new ScaleAnimation(1.0f, 1.1f, 1.0f, 1.1f, 1, 1f, 1, 0.5f);}else {scaleAnimation = new ScaleAnimation(1.0f, 1.1f, 1.0f, 1.1f, 1, 0.5f, 1, 0.5f);}scaleAnimation.setDuration(500);animationSet.addAnimation(scaleAnimation);animationSet.setFillAfter(true);view.startAnimation(animationSet);manimationSet = animationSet;}
上面是放大动画,最基础的动画。
当item多的时候会报错,因为position一直增加,而childcount是可见的数目,当所有的item都是可见的时候将不会出错。所有要修改一下代码。修改为以上的代码就不出错了
@Overrideprotected int getChildDrawingOrder(int childCount, int i) {// return super.getChildDrawingOrder(childCount, i);if (this.getSelectedItemPosition() != -1) {if (i + this.getFirstVisiblePosition() == this.getSelectedItemPosition()) {// 这是原本要在最后一个刷新的itemreturn childCount - 1;}if (i == childCount - 1) {// 这是最后一个需要刷新的itemreturn this.getSelectedItemPosition() - this.getFirstVisiblePosition();}}return i;}
以上的代码就是兼顾可见可不见的条目,这时候就适配左右的不管多或少的item报空指针异常问题。
以上是我遇见并解决的问题,欢迎大家交流。
阅读全文
0 0
- 关于gridview多item选中放大问题。
- GridView 条目选中放大被遮挡问题
- Android RecyclerView item选中放大被遮挡问题
- gridview的item放大问题,setOnItemSelectedListener不执行的解决办法。
- gridview的item放大问题,setOnItemSelectedListener不执行的解决办法。
- android 选中GridView 中 的item 时进行图片放大的操作
- 关于GridView item动态宽度的问题
- Android TV item 选中 放大,加边框
- Android GridView 选择item 放大的动画
- android GridView实现选中图片放大。
- android GridView实现选中图片放大
- Stbdroid之GridView+选中动画放大
- android gridview的item放大问题,setOnItemSelectedListener不执行的解决办法。
- android gridview的item放大问题,setOnItemSelectedListener不执行的解决办法。
- android GridView 在TV上解决item放大时候,被其他item遮挡,单纯使用bringToFront无法解决的问题
- gridview,点击选中一个或多个item,并改变item背景颜色,字体等
- 关于gridView第一个item点击不响应的问题
- GridView单击选中问题
- 待学习&复习的内容
- 设计模式简介
- Excel的基础操作
- mysql 多表更新
- PHP中MySQL、MySQLi和PDO的用法和区别
- 关于gridview多item选中放大问题。
- 容斥原理
- 两种基于AOP的日志管理方法(springboot)
- Storm架构
- HDR技术研究之Radiometric Self Calibration
- Luogu P3120 [USACO15FEB]牛跳房子(金)Cow Hopscotch (Gold)
- Java并发编程--Lock的用法
- 黑白图像直方图“盛大游戏杯”第15届上海大学程序设计联赛夏季赛暨上海高校金马五校赛
- 【网络实验】非法(不按RFC标准)修改skb数据包遇到的现象