开发者

Trouble with clicking after layout animation

开发者 https://www.devze.com 2023-03-22 10:22 出处:网络
I have a ListView on screen and a menu at the bottom. Upon a click of menu key开发者_如何转开发, it animates-slides off the screen and the ListView expands.

I have a ListView on screen and a menu at the bottom. Upon a click of menu key开发者_如何转开发, it animates-slides off the screen and the ListView expands.

        menuBtmVisable = false;
        Animation menu_off = AnimationUtils.loadAnimation(this, R.anim.menu_off);
        menubtm.startAnimation(menu_off);

        Display display = getWindowManager().getDefaultDisplay(); 
        LayoutParams listlp = new LayoutParams(display.getWidth(), display.getHeight()-87 , 0, 50);
        ListViewMain.setLayoutParams(listlp);

menu_off.xml

 <set
    android:fillEnabled="true"
    android:fillAfter="true"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <translate
        android:fromYDelta="0"
        android:toYDelta="120"
        android:duration="500"
     />
</set>

Yet when, with the menu down, I click on the ListView item "13" ( see picture ), it results in a menu click, as if it is still in place...

What do you think would be the best way to take care of it?


I've looking for an answer for a problem like that, and finally, after a week, I've managed to solve my problem. Since it looks similar to yours, maybe it will help you.

Set up and AnimationListener() in your animation and, onAnimationEnd, change the layout as you want. In my case, I wanted to slide a layout up, so 2 buttons would appear from below. However, the layout just slided visually; the buttons would still be off screen, interactionally speaking. So I have something like this:

final View screen = findViewById(R.id.welcome_screen);
final Animation a = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_home_up);
a.setFillAfter(true);
a.setAnimationListener(new AnimationListener() {

    public void onAnimationStart(Animation animation) {
    }

    public void onAnimationRepeat(Animation animation) {
    }

    public void onAnimationEnd(Animation animation) {
        screen.clearAnimation();
        screen.setPadding(0, -222, 0, 0);
    }
});
screen.startAnimation(a);
0

精彩评论

暂无评论...
验证码 换一张
取 消