我有一个包含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();
}
});
答案 0 :(得分:0)
首先,我想说,在列表视图中添加动画可能是一个坏主意,因为它们会不断回收。这意味着你正在上下滚动动画将继续发生。看看你的代码,我认为问题是你使用mShakeDetector作为类对象。问题可能是这导致以前的动画被覆盖。我建议在getView方法中创建一个本地的。
像这样,但你也需要为其他对象做这件事。
传感器mSensorManager =(SensorManager)getSystemService(Context.SENSOR_SERVICE);
让我知道它是怎么回事!