问题如下图:
第一次点击时,动画效果没错。但第二次点击时,两个白色的item都动了。貌似是上次的动画又播了一遍,求指导决方法。
重写了baseAdapter,class MusicListAdapter extends BaseAdapter。
getView如下,仅设置了选中字体和非选中字体静态效果。
第一次点击时,动画效果没错。但第二次点击时,两个白色的item都动了。貌似是上次的动画又播了一遍,求指导决方法。
重写了baseAdapter,class MusicListAdapter extends BaseAdapter。
getView如下,仅设置了选中字体和非选中字体静态效果。
class MusicListAdapter extends BaseAdapter{
                @Override
                public int getCount() {
                        return list.size();
                }
                @Override
                public Object getItem(int arg0) {
                        return list.get(arg0);
                }
                @Override
                public long getItemId(int arg0) {
                        return arg0;
                }
                @Override
                public View getView(int arg0, View arg1, ViewGroup arg2) {
                        if (arg1 == null) {
                                arg1 = getLayoutInflater().inflate(R.layout.list_item,
                                                null);
                        }
                        TextView tv_music_name = (TextView) arg1
                                        .findViewById(R.id.textView1_music_name);        
                        tv_music_name.setTextColor(Color.WHITE);
                        tv_music_name.setText(list.get(arg0).substring(18).replace(".mp3", " ").replace("_", "-"));
                        if(arg0==FIXMUSICINDEX){//位置FIXMUSICINDEX固定被选中
                                tv_music_name.setAlpha(1);
                                tv_music_name.setTextColor(Color.rgb(30,144,255));
                                tv_music_name.setTextSize(25);
                                tv_music_name.setBackgroundResource(R.drawable.colorchange);
                                tv_music_name.setFocusable(true);//实现focus在列表
                                tv_music_name.requestFocus();
                        }
                        else if(arg0>=0&&arg0<getCount()){
                                tv_music_name.setTextColor(Color.argb(150,255,255,255));
                                tv_music_name.setShadowLayer(3F,1F,1F,Color.argb(255, 200, 200, 200));
                                tv_music_name.setTextSize(19);                
                                tv_music_name.setBackgroundResource(R.drawable.black);
                                tv_music_name.getBackground().setAlpha(0);
                        }        
                        if(arg0==getCount())
                                clickflag=0;
                        return arg1;
                }
listView的点击监听事件如下,写在oncreate()里,在这里定义了点击项动画:
listView.setOnItemClickListener(new OnItemClickListener(){
                        @Override
                        public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
                                        long arg3) {                
                                orienIndex=arg2-FIXMUSICINDEX;                                
                                updatemusiclist();
                                
                                if(orienIndex>0)
                                        arg0.startAnimation(textup);
                                else if(orienIndex<0)
                                        arg0.startAnimation(textdown);
                                clickflag=1;
                                listView.clearAnimation();
                                listView.getChildAt(currIndex).startAnimation(tbig);
                                if(clickflag==1){
                                        listView.getChildAt(recordpreviousindex).startAnimation(tsmall);
                                }        
                        }                                
                });
其中recordpreviousindex记录上次位置为4的item现在的位置。
这个listener在每次点击的时候执行了几次啊,为神马会在一次点击时有这么多动画?
解决方案:50分