Android开发初体验-菜单动画

目的

实现点击页面的按钮,可以弹开菜单,再点击一下菜单收回。

实际操作

创建新的project

将资源图片拖到mipmap里

在xml里配置界面并且设置id号

07282.png

其他bcdefg以类似代码编辑

图片a是最外层图片,相当于按钮,我们要点击它才能弹出相应的菜单
因此用onclick实现


07283.png

一开始imgClicked有红线表示为实现 按alt+enter Create"imgClicked(View)'....
将转移到mainactivity


图片发自简书App

获取xml里面的所有图片视图

先用一个数组保存所有视图的id号

用一个数组保存所有id号对应的视图

private int[] resID = {R.id.iv_b,R.id.iv_c,R.id.iv_d,R.id.iv_e,R.id.iv_f,R.id.iv_g,R.id.iv_h};
private List<ImageView> imageViews = new ArrayList<>();

定义一个变量 记录按钮的状态 isOpen

private boolean isOpen = false;

将id号对应图片视图读取出来 放到ImageViews里面

   for (int i = 0;i < resID.length; i ++){
        int id = resID[i];
        ImageView img = findViewById(id);
        imageViews.add(img);
    }-

判断按钮打开or关闭

public void imgClicked(View view) {
    if (isOpen == true){
        //应该关闭 收回列表
        close();

    }else {
        //应该打开 展开列表
        open();
    }
 isOpen = !isOpen;

自己定义一个方法写动画

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

private void open(){
   for (int i = 0;i < imageViews.size();i++){
       //取出一个图片视图
       ImageView iv = imageViews.get(i);

       //给这个视图添加移动动画
       ObjectAnimator oa = ObjectAnimator.ofFloat(iv,"translationY",0f,(i+1)*80f);
       oa.setDuration(1000);
       oa.setInterpolator(new BounceInterpolator());
       oa.start();
   }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容