【问题标题】:How to make such animation in android? [closed]如何在android中制作这样的动画? [关闭]
【发布时间】:2011-11-28 04:49:06
【问题描述】:

在我的 Android 应用程序中,视图如下图所示:

现在,这里的 D 是一小部分,它是任何视图或可能是按钮。 我想要的是,如果用户单击该“D”部分,则以不同颜色显示的视图应转换为从左到右的方式,并且只有“D”部分出现在屏幕的最右边缘。如果用户再次点击“D”部分,视图会从右向左平移,如上图所示。

怎么可能?

【问题讨论】:

    标签: android android-layout android-emulator android-animation translate-animation


    【解决方案1】:

    假设 D 是一个图像视图,它在 x 方向上从 0 移动到 200。 请参阅下面的代码。

    public class DActivity extends Activity {
    ImageView D;
    int x=0,y=0;
    int a=0;
    int newx=0;
    TranslateAnimation TA;
    
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        D=(ImageView)findViewById(R.id.d);
        RelativeLayout RL=(RelativeLayout)findViewById(R.id.rl);
        D.setOnTouchListener(new OnTouchListener() {
    
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                // TODO Auto-generated method stub
                x=v.getLeft();
                y=v.getTop();
                Toast.makeText(getApplicationContext(), "X="+x+"y="+y, Toast.LENGTH_LONG).show();
                if(x==0){
                    D.setEnabled(false);
                    a=200;
                    newx=200;
                    Anim();
                }
                if(x==200){
                    D.setEnabled(false);
                    a=-200;
                    newx=0;
                    Anim();
                }
                return true;
            }
        });
    
    }
    public void Anim(){
        TranslateAnimation TAnimation=new TranslateAnimation(0, a, 0,0);
        TAnimation.setInterpolator(new LinearInterpolator());
        TAnimation.setDuration(5000);
        TAnimation.setFillAfter(false);
        TAnimation.setFillEnabled(true);
        TAnimation.setFillBefore(true);
        D.startAnimation(TAnimation);
    
        TAnimation.setAnimationListener(new AnimationListener() {
    
            public void onAnimationStart(Animation animation) { }
    
            public void onAnimationRepeat(Animation animation) {}
    
            public void onAnimationEnd(Animation animation) {               
                LayoutParams param=new RelativeLayout.LayoutParams( LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
                param.setMargins(newx, y, 0, 0);
                    D.setLayoutParams(param);
                    D.setEnabled(true);
            }
        });
    }
    

    }

    【讨论】:

      猜你喜欢
      • 2016-03-27
      • 2019-03-06
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-11-25
      • 2021-10-18
      • 2018-09-08
      • 1970-01-01
      相关资源
      最近更新 更多