-3

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

见

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

怎么可能制作?

4

1 回答 1

2

假设 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);
        }
    });
}

}

于 2011-11-28T10:09:38.013 回答