IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> Android 简单实现View隐藏显示渐变动画,动画工具 -> 正文阅读

[移动开发]Android 简单实现View隐藏显示渐变动画,动画工具


import android.view.View;
import android.view.animation.AlphaAnimation;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;

/**
 * Android实现View隐藏显示渐变动画,动画工具
 * Created by dcg on 2021/9/25.
 */

public class AnimationUtils {
    public enum AnimationState{
        STATE_SHOW,
        STATE_HIDDEN,
        STATE_SHOW_DOWN,
        STATE_SHOW_UP,
        STATE_SHOW_LEFT,
        STATE_SHOW_RIGHT,
        STATE_HIDDEN_DOWN,
        STATE_HIDDEN_UP,
        STATE_HIDDEN_LEFT,
        STATE_HIDDEN_RIGHT
    }
    /**
     * 渐隐渐现动画
     * @param view 需要实现动画的对象
     * @param state 需要实现的状态
     * @param duration 动画实现的时长(ms)
     */
    public static void showAndHiddenAnimation(final View view, AnimationState state, long duration){

        view.post(new Runnable() {
            @Override
            public void run() {
                int viewWidth=view.getMeasuredWidth()+50;
                int viewHeight=view.getMeasuredHeight()+50;

                float start = 0f;
                float end = 0f;
                if(state == AnimationState.STATE_SHOW || state == AnimationState.STATE_SHOW_DOWN || state == AnimationState.STATE_SHOW_UP
                        || state == AnimationState.STATE_SHOW_LEFT || state == AnimationState.STATE_SHOW_RIGHT){
                    end = 1f;
                    view.setVisibility(View.VISIBLE);
                } else
                if(state == AnimationState.STATE_HIDDEN || state == AnimationState.STATE_HIDDEN_DOWN || state == AnimationState.STATE_HIDDEN_UP
                        || state == AnimationState.STATE_HIDDEN_LEFT || state == AnimationState.STATE_HIDDEN_RIGHT){
                    start = 1f;
                    view.setVisibility(View.GONE);
                }

                AnimationSet animationSet = new AnimationSet(true);

                //渐变的动画
                AlphaAnimation animation = new AlphaAnimation(start, end);
                animation.setDuration(duration);
                animation.setFillAfter(true);
                //平移动画
                if(state == AnimationState.STATE_SHOW_DOWN ){
                    TranslateAnimation translateAnimation = new TranslateAnimation(0,0,-viewHeight,0);//平移动画  从0,-100,平移到0,0
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }else if(state == AnimationState.STATE_HIDDEN_DOWN){
                    TranslateAnimation translateAnimation = new TranslateAnimation(0,0,0,-viewHeight);//平移动画  从0,0,平移到0,-100
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }else if(state == AnimationState.STATE_SHOW_UP ){
                    TranslateAnimation translateAnimation = new TranslateAnimation(0,0,viewHeight,0);//平移动画  从0,100,平移到0,0
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }else if(state == AnimationState.STATE_HIDDEN_UP){
                    TranslateAnimation translateAnimation = new TranslateAnimation(0,0,0,viewHeight);//平移动画  从0,0,平移到0,100
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }else if(state == AnimationState.STATE_SHOW_LEFT ){
                    TranslateAnimation translateAnimation = new TranslateAnimation(-viewWidth,0,0,0);//平移动画  从-100,0,平移到0,0
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }else if(state == AnimationState.STATE_HIDDEN_LEFT){
                    TranslateAnimation translateAnimation = new TranslateAnimation(0,-viewWidth,0,0);//平移动画  从0,0,平移到-100,0
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }else if(state == AnimationState.STATE_SHOW_RIGHT ){
                    TranslateAnimation translateAnimation = new TranslateAnimation(viewWidth,0,0,0);//平移动画  从100,0,平移到0,0
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }else if(state == AnimationState.STATE_HIDDEN_RIGHT){
                    TranslateAnimation translateAnimation = new TranslateAnimation(0,viewWidth,0,0);//平移动画  从0,0,平移到0,100
                    translateAnimation.setDuration(duration);
                    translateAnimation.setFillEnabled(true);//使其可以填充效果从而不回到原地
                    translateAnimation.setFillAfter(true);//不回到起始位置
                    animationSet.addAnimation(translateAnimation);
                }
                animationSet.addAnimation(animation);
                animationSet.setAnimationListener(new Animation.AnimationListener() {

                    @Override
                    public void onAnimationStart(Animation animation) {
                    }

                    @Override
                    public void onAnimationRepeat(Animation animation) {
                    }

                    @Override
                    public void onAnimationEnd(Animation animation) {
                        view.clearAnimation();
                    }
                });

                view.setAnimation(animationSet);
                animationSet.start();
            }
        });
    }
}

例子
弹出显示

   AnimationUtils.showAndHiddenAnimation(view,AnimationUtils.AnimationState.STATE_HIDDEN_UP,300);

收起隐藏

 AnimationUtils.showAndHiddenAnimation(view, AnimationUtils.AnimationState.STATE_SHOW_UP, 300);
  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-26 10:17:52  更:2021-09-26 10:18:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 19:59:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码