「已注销」 2016-07-25 03:10 采纳率: 0%
浏览 703

安卓程序的一个逻辑小问题求解

程序上有一个小逻辑需要处理,但是自己想了很久但是没有一个很好的办法,希望各位大神能够赐教,如果不吝写个demo就更好了,我做的是一个自定义的listview想实现的效果就是点击的那个item会变大,初始化加载列表的时候执行了一个 startScaleTo(convertView, 0.6f, 0.6f);函数,即初始化的时候没一个item都是缩小的。
下面是我逻辑上的问题,我想实现点击一个item执行startScaleAnimator(view,0.6f, 1.0f);放大函数,再点击另一个item的时候另一个item也执行放大函数 然后之前点击的这个item执行缩小函数,还有一个就是如果点击同一个item只执行一次放大函数,求各位大神赐教啊!!这里想了个好久,可能有一些方法我还不是很了解

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
getCheckedItemPosition();
// startScaleAnimator(view.getChildAt(scaleFlagIndex), 1.0f, 0.6f);
这里面的逻辑搞不清楚了。。。
}

  • 写回答

2条回答 默认 最新

  • 普通网友 2016-07-25 08:06
    关注

    那么,我来问你,你做这个效果的目的是什么呢?感觉很神奇很炫酷?

    如果你执意要这么做,那么我给你说说思路吧,代码我就不写了。

    首先,在OnItemClickListener里边调用修改ListView的Item的View是大错特错的!因为ListView的Item有缓冲机制,而且在除了适配器的getView函数的任何一个地方修改Item的View都会导致意想不到的错误。

    其次,在适配器的getView函数中是能够直接操作到item的最外层ViewGroup的,所以应该在这里修改。**另外,不建议你直接修改View的scale,你可以通过NineOldAndroid这个动画框架来改Scale**。那么像你说的,初始化一个scale,点击了之后又是另一个scale,应该定义一个实体类,这个实体类是作为适配器的基本数据类型,实体类中以一个int来表示scale,这样的话,在getView函数中,根据传入的实体类得到当前的item的scale值,再设置就行了。这样的话,你甚至能通过传入的实体类控制不同的item显示各种不同的效果。

    说白了一句话就是,**对于ListView这种以适配器为基础的容器类的时候,要修改它的item,都得在适配器中修改**。

    评论

报告相同问题?

悬赏问题

  • ¥100 求三轴之间相互配合画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站