android 实现侧边弹窗特效代码
作者:灵神翁 发布时间:2021-10-18 07:23:02
标签:android,侧边,弹窗
大家好哇,又是我,梦辛工作室的灵,今天来给大家讲解下如何实现 安卓的侧边弹窗,
先大概讲下基本原理吧,其实很简单,就是一个进出动效,用 位移 加 透明度 效果比较好,
比如你的侧边弹窗是在左边,那就是从左往右位置 100%(代表动效目标的宽或高)
不过需要注意:
初始位置一定要先最后应该显示的位置,不要将该View使用Margin或其他位移至其他位置,不然动效结束后,点击视图没有响应,因为此时View还在初始位置,所以你点击View仅动画修改过后的位置是无效的,除非你使用的是属性动画
下面来看下我的布局,简单写了一个:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<RelativeLayout
android:id="@+id/rel_dialog_back"
android:background="#B3000000"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<!-- 商品信息弹窗 -->
<LinearLayout
android:layout_alignParentRight="true"
android:id="@+id/lin_dialog_content"
android:layout_width="400dp"
android:layout_height="match_parent"
android:padding="10dp"
android:background="#FFFFFF"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:text="我是弹窗"
android:textColor="@color/colorAccent"
android:gravity="center"
android:textSize="80sp"
android:layout_gravity="center"/>
</LinearLayout>
</RelativeLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
然后就是res/anim下写动画文件:
dialog_in.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:interpolator="@android:anim/decelerate_interpolator">
<!--透明度标签:表示透明0到不透明1之间的变换-->
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0" >
</alpha>
<!-- 100% 代表向右 视图宽度, 0%代表视图初始位置 -->
<translate
android:fromXDelta="100%"
android:toXDelta="0%">
</translate>
</set>
dialog_out.xml:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:fillAfter="true"
android:interpolator="@android:anim/decelerate_interpolator">
<!--透明度标签:表示透明0到不透明1之间的变换-->
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0" >
</alpha>
<translate
android:fromXDelta="0%"
android:toXDelta="100%">
</translate>
</set>
最后是代码去触发动画:
final Animation anim = AnimationUtils.loadAnimation(this, R.anim.dialog_in);
anim.setDuration(300);
anim.setFillAfter(true);
view.startAnimation(anim );
anim.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
//一定要记得,动画结束后清除动画,然后及时View 处于 View.GONE状态时也会触发点击凶过
view.clearAnimation();
}
@Override
public void onAnimationRepeat(Animation animation) {
}
});
其实还可以进阶一下,监听界面左边部分的手势,当按下点与抬起点之间的横向距离达到一定值时启动,入场动画或者出场动画,就可以达到通过手势触发或关闭侧边弹窗效果了,总体还是很简单的,大家可以试试
来源:https://blog.csdn.net/weixin_41392105/article/details/118023294


猜你喜欢
- 单例:Singleton,是指仅仅被实例化一次的类。饿汉单例设计模式一、饿汉设计模式public class SingletonHungry
- 本文实例讲述了Java Swing组件文件选择器JFileChooser简单用法。分享给大家供大家参考,具体如下:先来看效果:说明:选择文件
- C#中List可谓是使用最广泛的一种数据类型了,使用他来规范数据时,往往会涉及到对数据的处理操作,相关处理数据方法也非常丰富,本文将简单介绍
- 1.常见字符串编码常见的字符串编码有:LATIN1 只能保存ASCII字符,又称ISO-8859-1。UTF-8 变长字节编码,一个字符需要
- 优秀的战士需要出色的剑才能战斗。同样,在现代IT中,每个编码人员都需要最好的Android开发人员工具来提高他们的技能和效率。在Androi
- Feign调用服务Headers传参在使用springcloud中经常会出现个服务调用,一般情况下会在Headers加上token的验证,那
- 本文实例讲述了C#编程获取客户端计算机硬件及系统信息功能。分享给大家供大家参考,具体如下:这里使用C#获取客户端计算机硬件及系统信息 ,包括
- Android可以在所有应用上方添加View,就是给WindowManager添加一个View,在创建的View的时候可以给这个View设置
- 1.根据入参带分页参数进行sql查询分页 Criteria criteria = n
- 前言MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手
- 背景在我做WinForm开发的过程中,经常会遇到耗时操作或阻塞操作。他们会引发软件的卡顿甚至假死,严重影响软件的使用。因此,这类耗时或阻塞的
- Java面向对象之猜拳游戏,供大家参考,具体内容如下1 要求与电脑进行猜拳并记录分数。2 Computer.java 源代码(电脑自动随机出
- jcasbin简介:jcasbin 是一个用 Java 语言打造的轻量级开源访问控制框架https://github.com/casbin/
- 第1部分 HashMap介绍HashMap简介HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。HashMap
- 解释:二叉树的深度:从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。二叉树的宽度:二叉树的每一层中
- 如何避开在ListView等AdapterView上动态添加删除项的陷阱,下面就为大家分享,具体内容如下首先,定义如下array资源,作为列
- idea去掉不想commit的文件我们项目在每次commit代码时,有时候会有一些不想提交又不能删除的代码,怎么做呢?此方法亲测最方便!!!
- Java中的比较问题是一个很基础又很容易混淆的问题。今天就几个容易出错的点作一个比较详细的归纳与整理,希望对大家的学习与面试有帮助。一、==
- 不少朋友自己下载了一个Android SDK,怎样在Android studio中默认的Android SDK路径呢?打开Android s
- 三层架构将整个业务应用划分为:(1)界面UI层(2)业务逻辑层(3)数据访问层对于复杂的系统分层可以让结构更加清晰,模块更加独立,便于维护。