Перевести анимацию как кривой путь в андроид - PullRequest
0 голосов
/ 29 февраля 2012

Как создать анимацию для перемещения изображения, например, кривой, сверху вниз?Здесь я использовал TranslateAnimation для этого, но он будет перемещать изображение сверху вниз в зависимости от координат x, y.Но я хочу переместить изображение как кривую.Но в моем коде он движется как линия.

public class ImageMoveActivity extends Activity {
    /** Called when the activity is first created. */
    TranslateAnimation transform;
    TextView tv;
    ImageView im1,im2,im3;

    @Override

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        transform = new TranslateAnimation(0, 150, 0, 300);
        //transform = new TranslateAnimation(Animation.RELATIVE_TO_PARENT, 1, Animation.RELATIVE_TO_PARENT, 20, Animation.RELATIVE_TO_PARENT, 50, Animation.RELATIVE_TO_PARENT, 0);
        //im1 = (ImageView)findViewById(R.id.imageView1);
        im1 = (ImageView)findViewById(R.id.imageView1);
        im2 = (ImageView)findViewById(R.id.imageView2);
        im3 = (ImageView)findViewById(R.id.imageView3);
        tv = (TextView)findViewById(R.id.Textview);


        Bitmap bitmap = BitmapFactory.decodeResource(this
                .getResources(), R.drawable.xxl);
        /* set other image top of the first icon */
        Bitmap bitmapStar = BitmapFactory.decodeResource(this
                .getResources(), R.drawable.icon);

        Bitmap bmOverlay = Bitmap.createBitmap(bitmap.getWidth(),
                bitmap.getHeight(), Config.ARGB_8888);
//        Bitmap bmOverlay1 = Bitmap.createBitmap(bitmapStar.getWidth(),
//              bitmapStar.getHeight(), Config.ARGB_8888);
        Canvas canvas = new Canvas(bmOverlay);
        //Canvas canvas1 = new Canvas(bmOverlay1);
        canvas.drawARGB(0x00, 0, 0, 0);
        canvas.drawBitmap(bitmap, 0, 0, null);
        //canvas1.drawARGB(0x00, 0, 0, 0);
        canvas.drawBitmap(bitmapStar, 0, 0, null);

        BitmapDrawable dr = new BitmapDrawable(bmOverlay);
        //BitmapDrawable dr1 = new BitmapDrawable(bmOverlay1);
        dr.setBounds(10, 30, 10, 30);
        //dr1.setBounds(10, 30, 10, 30);

        im1.setImageDrawable(dr);
        //im3.setImageDrawable(dr1);

//im1.setImageDrawable(R.drawable.xxl);
        im1.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                start();
                hide();
            }
            private void start() {
                // TODO Auto-generated method stub
                im1.startAnimation(transform);
                transform.setDuration(1000);
                //transform.setFillAfter(true);
            }
            private void hide() {
                // TODO Auto-generated method stub
                im1.setVisibility(View.GONE);
            }

        });


    }
}

Может ли кто-нибудь помочь мне в этом?

Ответы [ 2 ]

0 голосов
/ 29 февраля 2012

Вы можете создать серию анимации перевода из одной точки в другую на кривой и применить анимацию к представлениям.

Например, если у нас есть imageView, который должен быть анимирован, а a1 и a2 - анимацииприменяется:

   imgView.clearAnimation();
    imgView.startAnimation(a1);

  imgView.clearAnimation();
    imgView.startAnimation(a2);
0 голосов
/ 29 февраля 2012

TranslateAnimation может перемещать виды из одной точки в другую по прямой линии.Насколько я знаю, вы не можете дать никакого другого пути к нему.Попробуйте использовать пользовательские виды и canvas для this, где вы можете передавать координаты x и y при рисовании и аннулировании представления.Вам необходимо переопределить следующий метод при расширении класса View.Здесь метод changeCoordinate () может изменять координаты x, y на кривой.

public void onDraw(Canvas canvas){
  canvas.drawBitmap(bitmap,x,y,null);
  changeCoordinate();
  invalidate()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...