Android Animation(三)

3379 ワード

前に作成したいくつかのアニメーションは、反転、平行移動はそれぞれ独立しています。以下はミックスを作成し、同時にxmlとjavaのコードを利用するプログラムも作成しました。
前と同じように、まずresの下でanimフォルダを作成して、xmlファイルを作成します。
1.animone.xml



    

    

2.activity_main.xml



    

    


3.MainActivity.java
public class MainActivity extends AppCompatActivity {

    private ImageView imageView;
    private Button btnStartXml;
    private Button btnStartJava;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = (ImageView) findViewById(R.id.image_view);
        btnStartXml = (Button) findViewById(R.id.btn_start_xml);
        btnStartJava = (Button) findViewById(R.id.btn_start_java);

        btnStartXml.setOnClickListener(new XmlListener());
        btnStartJava.setOnClickListener(new JavaListener());
    }

    class XmlListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            Animation animation = AnimationUtils.loadAnimation(MainActivity.this, R.anim.animone);
            imageView.startAnimation(animation);
        }
    }

    class JavaListener implements View.OnClickListener{

        @Override
        public void onClick(View v) {
            AnimationSet animationSet = new AnimationSet(true);
            ScaleAnimation scaleAnimation = new ScaleAnimation(0,0.1f,0,0.1f,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
            RotateAnimation rotateAnimation = new RotateAnimation(0,360,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
            rotateAnimation.setDuration(1000);

            animationSet.addAnimation(rotateAnimation);
            animationSet.addAnimation(scaleAnimation);
            imageView.startAnimation(animationSet);
        }
    }

}