• 安卓开源库之动画篇


    本文主要介绍收集了笔者所用过的开源动画库,达到一些比较好看的效果。

    一个富有动感的 Sheet

    链接:

    zzz40500/AndroidSweetSheet: 一个富有动感的Sheet(选择器)

    效果如下

    这里写图片描述

    示例代码

    package com.zj.testsheet;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.widget.RelativeLayout;
    import android.widget.Toast;
    
    import com.mingle.entity.MenuEntity;
    import com.mingle.sweetpick.BlurEffect;
    import com.mingle.sweetpick.RecyclerViewDelegate;
    import com.mingle.sweetpick.SweetSheet;
    
    import java.util.ArrayList;
    
    public class MainActivity extends AppCompatActivity {
    
        SweetSheet mSweetSheet;
        RelativeLayout rl;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            rl= (RelativeLayout) findViewById(R.id.rl);
            // SweetSheet 控件,根据 rl 确认位置
            mSweetSheet = new SweetSheet(rl);
    
    
            final ArrayList<MenuEntity> list = new ArrayList<>();
            //添加假数据
            MenuEntity menuEntity1 = new MenuEntity();
            menuEntity1.iconId = R.drawable.ic_account_child;
            //menuEntity1.titleColor = 0xff000000;
            menuEntity1.title = "code";
            MenuEntity menuEntity = new MenuEntity();
            menuEntity.iconId = R.drawable.ic_account_child;
            //menuEntity.titleColor = 0xffb3b3b3;
            menuEntity.title = "QQ";
            list.add(menuEntity1);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
            list.add(menuEntity);
    
    //设置数据源 (数据源支持设置 list 数组,也支持从menu 资源中获取)
            mSweetSheet.setMenuList(list);
    
            SweetSheet mSweetSheet2 = new SweetSheet(rl);
    
            //从menu 中设置数据源
            mSweetSheet2.setMenuList(R.menu.menu_sweet);
    //根据设置不同的 Delegate 来显示不同的风格.
            mSweetSheet.setDelegate(new RecyclerViewDelegate(true));
    //根据设置不同Effect来设置背景效果:BlurEffect 模糊效果.DimEffect 变暗效果,NoneEffect 没有效果.
            mSweetSheet.setBackgroundEffect(new BlurEffect(8));
    //设置菜单点击事件
            mSweetSheet.setOnMenuItemClickListener(new SweetSheet.OnMenuItemClickListener() {
                @Override
                public boolean onItemClick(int position, MenuEntity menuEntity1) {
    
                    //根据返回值, true 会关闭 SweetSheet ,false 则不会.
                    Toast.makeText(MainActivity.this, menuEntity1.title + "  " + position, Toast.LENGTH_SHORT).show();
                    return true;
                }
            });
    
            mSweetSheet.show();
        }
    }

    A fluent Android animation library。安卓动画库

    主要包括一些进度条效果

    链接:

    gzu-liyujiang/ViewAnimator: A fluent Android animation library。安卓动画库,加入了一些不错的动画,如:fall、shake、flash、fadeIn、rollOut……支持任意路径动画(示例动画为不断冒出来的桃心及飘雪),支持按SVG格式的path运动。部分已合并到原作者florent37的主分支

    效果如下

    这里写图片描述

    示例代码

    private void animateParallel() {
            ViewAnimator.animate(mountain, image)
                    .dp().translationY(-1000, 0)
                    .alpha(0, 1)
    
                    .andAnimate(percent)
                    .scale(0, 1)
    
                    .andAnimate(text)
                    .dp().translationY(1000, 0)
                    .textColor(Color.BLACK, Color.WHITE)
                    .backgroundColor(Color.WHITE, Color.BLACK)
    
                    .waitForHeight()
                    .interpolator(new AccelerateDecelerateInterpolator())
                    .duration(1000)
    
                    .thenAnimate(percent)
                    .custom(new AnimationListener.Update<TextView>() {
                        @Override
                        public void update(TextView view, float value) {
                            value = value * 100;
                            view.setText(String.format(Locale.US, "%.0f%%", value));
                        }
                    }, 0, 1)
    
                    .andAnimate(image)
                    .rotation(0, 360)
                    .onStop(new AnimationListener.Stop() {
                        @Override
                        public void onStop() {
                            Intent intent = new Intent(StartActivity.this, MainActivity.class);
                            startActivity(intent);
                        }
                    })
    
                    .duration(1000)
    
    
    
                    .start();
    }

    recycleView动画效果

    链接:

    gabrielemariotti/RecyclerViewItemAnimators: An Android library which provides simple Item animations to RecyclerView items

    效果如下:

    这里写图片描述

    示例代码


    recyclerView= (RecyclerView) findViewById(R.id.id_recyclerview);
    recyclerView.setLayoutManager(new GridLayoutManager(this, 4));
    mAdapter=new HomeAdapter();
    slideInBottomAnimatorAdapter=new SlideInBottomAnimatorAdapter(mAdapter,recyclerView);
    recyclerView.setAdapter(slideInBottomAnimatorAdapter);

  • 相关阅读:
    20.12.21 leetcode316
    20.12.18 leetcode389
    NOIP2017退役记
    DNA序列 LOJ NOIP模拟赛 D1T1 字符串哈希
    解药还是毒药 codevs2594 状态压缩 BFS
    换教室 vijos2005 NOIP2016 D1T3 期望DP 图论最短路(雾)
    都市大飙车 UESTC 1652 概率DP
    添加括号 vijos1038 动态规划 区间DP
    一道神奇的并查集
    还有一道神奇的暴力(正解是要旋转坐标轴的)
  • 原文地址:https://www.cnblogs.com/jjx2013/p/6223703.html
Copyright © 2020-2023  润新知