有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android翻译动画导致Clicklistener问题

我在安卓中创建的翻译动画在运行动画后出现问题,我设置的任何ClickListener都保留在它们出现异常问题之前的精确坐标中,我已经花了几天时间研究这个问题,还没有找到解决方案,我发现的一些建议包括将我的目标开发级别更改为4.0和更改我的布局。布局(x,x,x,x),这两个都不适合我,关于如何更改此代码以使任何clicklisteners随布局移动,有什么建议吗

upperView = (LinearLayout) findViewById(R.id.upperView);
    hiddenMenu = (LinearLayout) findViewById(R.id.hiddenMenu);

    DisplayMetrics metrics = new DisplayMetrics();
    getWindowManager().getDefaultDisplay().getMetrics(metrics);
    Integer width = metrics.widthPixels;

    upperView.getLayoutParams().width = width;
    hiddenMenu.getLayoutParams().width = (int) (width * 0.75);

    int theDistance = hiddenMenu.getLayoutParams().width;

    //Run animation
    TranslateAnimation anim = new TranslateAnimation(0, theDistance - 0 , 0, 0);
    anim.setDuration(1000);
    anim.setFillAfter( true );
    upperView.startAnimation(anim);

共 (2) 个答案

  1. # 1 楼答案

    问题是TranslateAnimation不会修改视图的实际位置,只会修改translate视图的绘制位置

    试着用PropertyAnimation来做这件事。 它们已经定位为实际查看,而不是仅定位视图的绘制

    更新: 试着使用类似

    upperView.animate().setDuration(1000).translationX(theDistance - 0);
    
  2. # 2 楼答案

    有几件事你需要知道。android或旧版sdk将点击监听器保留在对象的原始位置,重要的是,您可以在新位置为点击创建一个不可见的视图,或者使用新的sdk