将动画添加到listview的textview子级中

时间:2016-04-20 14:18:39

标签: java android listview

我有一个包含10行的列表视图。每行都有一个textview,当我尝试在textview本身上添加一个fade_out动画时,动画只发生在listviews最后一项上。我想在所有的儿童textview上做这件事。

@Override
    public View getView(int position, View convertView, ViewGroup parent) {


        LayoutInflater in=getLayoutInflater();
        View row=in.inflate(R.layout.row_main, parent,false);



        titr=(TextView) row.findViewById(R.id.row_main_titr);
        matn=(TextView) row.findViewById(R.id.row_main_content);
        TextView extra=(TextView) row.findViewById(R.id.row_main_extra);
        ImageView image=(ImageView) row.findViewById(R.id.row_main_image);


        titr.setHorizontallyScrolling(true);
        //titr.setMovementMethod(new ScrollingMovementMethod());
        //titr.setScrollBarStyle(View.SCROLLBARS_INSIDE_INSET);



        ViewGroup.LayoutParams paramsi = image.getLayoutParams();
        paramsi.height= (W/2)-10;
        //image.setScaleType(ImageView.ScaleType.CENTER_CROP);
        image.setLayoutParams(paramsi);


        image.setImageBitmap(img[position]);

        titr.setTextSize((float)W/35);

        titr.setText(name[position]);
        matn.setText(Html.fromHtml(content[position]).toString().replace("•", "\n"));
        extra.setText("نظرها: "+commentcount[position]);
        titr.setTypeface(yekan);

        matn.setTypeface(yekan);
        extra.setTypeface(MainActivity.koodak);


        return (row);
    }





}

这里我想添加动画

 // ShakeDetector initialization
    mSensorManager = (SensorManager) getSystemService(Context.SENSOR_SERVICE);
    mAccelerometer = mSensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);


    mShakeDetector = new ShakeDetector(new OnShakeListener() {

        @Override
        public void onShake() {

            final Animation out = AnimationUtils.loadAnimation(getBaseContext(), android.R.anim.fade_out);
            out.setDuration(300);
            out.setFillAfter(true);

            // TODO Auto-generated method stub
            Toast.makeText(getApplicationContext(), "tekun bede", Toast.LENGTH_LONG).show();
        }
    });

1 个答案:

答案 0 :(得分:0)

首先,我想说,在列表视图中添加动画可能是一个坏主意,因为它们会不断回收。这意味着你正在上下滚动动画将继续发生。看看你的代码,我认为问题是你使用mShakeDetector作为类对象。问题可能是这导致以前的动画被覆盖。我建议在getView方法中创建一个本地的。

像这样,但你也需要为其他对象做这件事。

传感器mSensorManager =(SensorManager)getSystemService(Context.SENSOR_SERVICE);

让我知道它是怎么回事!