ImageView не «полностью» очищает растровое изображение после TranslateAnimation - PullRequest
0 голосов
/ 31 марта 2011

Эта проблема беспокоит меня, у меня есть два изображения в одной строке таблицы. Когда я нажимаю на изображение, ожидаемое поведение состоит в том, что оно перемещается вправо с помощью Translate Animation.

Проблема, с которой я столкнулся, заключается в том, что, когда я нажимаю на первое изображение, оно перемещается вправо, и образуется пустой слот, и это совершенно то, что я хотел, но когда я нажимаю на это пустое место снова, изображение снова появляется и снова перемещается вправо.

Вопрос: Я знаю, что вид объекта не меняется в Translate Animation, но почему растровое изображение появляется снова при первом просмотре изображения, когда я его повторяю. Я хотел бы, чтобы это произошло только один раз, и тогда растровое изображение останется со вторым видом навсегда (полностью очищено при первом просмотре). Как мне этого добиться ?

Мой код: открытый класс TestCode расширяет Activity { Переход анимацииAnim = 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 Ответ

1 голос
/ 12 сентября 2011

Проверьте эту ссылку аналогичного вопроса После завершения анимации вы можете изменить поля своих просмотров, чтобы они фактически переместились на место

...