ImageView在TranslateAnimation之后没有“完全”清除位图

时间:2011-03-31 05:59:04

标签: android animation bitmap imageview

这个问题让我感到不安,我在表格的一行中有两个图像视图。单击图像时,预期的行为是使用“翻译动画”向右滑动。

我遇到的问题是当我点击第一张图像时它向右移动并形成了空槽,这完全是我想要的,但是当我再次点击这个空白点时,图像重新出现并再次向右移动动画。

问题:我知道视图对象在翻译动画上没有改变,但为什么每当我重新点击它时,位图就会在第一个图像视图上重新出现。我希望这只发生一次,然后位图永远保持第二个视图(在firstview中完全清除)。我怎样才能实现?

我的代码: 公共类TestCode扩展Activity {     动画transitionAnim = null;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    Bitmap bMap1 = BitmapFactory.decodeResource(getResources(), R.drawable.g1);
    Bitmap bMapScaled1 = Bitmap.createScaledBitmap(bMap1, 50, 60, true);

    Bitmap bMap2 = BitmapFactory.decodeResource(getResources(), R.drawable.g2);
    Bitmap bMapScaled2 = Bitmap.createScaledBitmap(bMap2, 50, 60, true);
    try{
        TableLayout tableLayout = (TableLayout) findViewById(R.id.tableview);
        tableLayout.setClipChildren(false);

        TableRow tableRow = new TableRow(this);

        ImageView imageView1 = new ImageView(this);
        imageView1.setImageBitmap(bMapScaled1);
        imageView1.setPadding(1, 1, 1, 1);
        imageView1.setOnClickListener(viewClickListener);
        tableRow.addView(imageView1);

        ImageView imageView2 = new ImageView(this);
        imageView2.setImageBitmap(bMapScaled2);
        imageView2.setPadding(1, 1, 1, 1);
        imageView2.setOnClickListener(viewClickListener);
        tableRow.addView(imageView2);

        tableLayout.addView(tableRow);
    } catch (Exception e){
        e.printStackTrace();
    }   
}

private OnClickListener viewClickListener = new OnClickListener() {
    @Override
    public void onClick(View v) {
        transitionAnim = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 1.0f, Animation.RELATIVE_TO_PARENT, 0.0f, Animation.RELATIVE_TO_PARENT, 0.0f);
        transitionAnim.setDuration(1000);
        transitionAnim.setFillAfter(true);
        v.startAnimation(transitionAnim);
    }   
};

}

1 个答案:

答案 0 :(得分:1)

Check this link of similar question 您可以在动画完成时更改视图边距,因此视图实际上将移动到该位置