Android初体验

1st Android初体验

1.目的

  • 本文章主要介绍初步使用Andro Studio创建工程,以及实现ImageView的平移,旋转等简单动画

2.技术

1.将图片加入工程
2.ImageView的添加和参数设置
3.通过ObjectAnimator动画改变ImageView位置
4.使用RotationAnimate进行旋转动画

3.技术实现

  • 话不多说直接上图片 代码

  • 打开Android Studio,点击start,创建一个Basic Activity


    2.png

    -将准备好的图片素材拖入此目录


    3.png
  • 此出约束改为 RelativeLayout


    4.png
  • 添加imageView

<ImageView
        android:layout_width="200dp"
        android:layout_height="100dp"
        android:src="@mipmap/a"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:onClick="imgClicked"
        />
  • 如上将所有图片的参数设置好,由于层的原因将最外层的图片(即a图片最后创建)
  • 在MainActivity 中添加数组,Array 和 boolean
private int[] resID = {R.id.b, R.id.c, R.id.d, R.id.e, R.id.f, R.id.g};
    private List<ImageView> imageViews = new ArrayList<>();
    private boolean isOpen = false;
  • 用id数组取出每个imageView存入Array
for (int i = 0; i < resID.length; i++) {
            int id = resID[i];
            ImageView iv = findViewById(id);
            imageViews.add(iv);
        }
  • 最后根据点击事件添加动画
    1.改变坐标
ImageView iv = imageViews.get(i * 3 + j);
                ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "translationY", 0f, k * 150f);
                ObjectAnimator oax = ObjectAnimator.ofFloat(iv, "translationX", 0f, j * 150f);
                oa.setDuration(2000);
                oax.setDuration(2000);
                oa.start();
                oax.start();

2.添加旋转动画

RotateAnimation ra = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                ra.setDuration(2000);
                iv.startAnimation(ra);
public void imgClicked(View view) {
        if (isOpen == true) {
            //打开状态
            close();
        } else {
            //关闭
            open();
        }
        isOpen = !isOpen;

    }


    private void open() {
        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {

                int k = 3 - j;
                if (i == 0) {
                    k = -k;
                }
                ImageView iv = imageViews.get(i * 3 + j);
                ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "translationY", 0f, k * 150f);
                ObjectAnimator oax = ObjectAnimator.ofFloat(iv, "translationX", 0f, j * 150f);
                oa.setDuration(2000);
                oax.setDuration(2000);
                oa.start();
                oax.start();

                RotateAnimation ra = new RotateAnimation(0f, 360f, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f);
                ra.setDuration(2000);
                iv.startAnimation(ra);


            }
        }
    }

    private void close() {
//        for (int i = 0;i<resID.length;i++){
//            ImageView iv = imageViews.get(i);
//            ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",(i+1)*180f,0f);
//            oa.setDuration(1000);
//            oa.start();
//        }

        for (int i = 0; i < 2; i++) {
            for (int j = 0; j < 3; j++) {

                int k = 3 - j;
                if (i == 0) {
                    k = -k;
                }
                ImageView iv = imageViews.get(i * 3 + j);
                ObjectAnimator oa = ObjectAnimator.ofFloat(iv, "translationY", k * 150f, 0f);
                ObjectAnimator oax = ObjectAnimator.ofFloat(iv, "translationX", j * 150f, 0f);

                oa.setDuration(1000);
                oax.setDuration(1000);
                //oa.setInterpolator(new BounceInterpolator());
                oa.start();
                oax.start();
            }

        }

    }
}

4.实现效果

效果.gif
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容