Android开发 之 揭露动画

来源:互联网 发布:淘宝违规处理怎么处理 编辑:程序博客网 时间:2024/05/10 02:07

 揭露动画

当您显示或隐藏一组 UI 元素时,揭露动画可为用户提供视觉连续性。ViewAnimationUtils.createCircularReveal() 方法让您能够为裁剪区域添加动画以揭露或隐藏视图。


看代码:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:orientation="vertical"    android:layout_width="match_parent"    android:layout_height="match_parent"    >    <RelativeLayout        android:id="@+id/rl"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_weight="1"        android:background="#FF0">    </RelativeLayout>    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:layout_alignParentBottom="true"        android:orientation="horizontal">        <ImageButton            android:id="@+id/ib01"            android:layout_width="50dp"            android:layout_height="50dp"            android:background="@drawable/shape_r"            android:layout_margin="20dp"            android:onClick="button"            />        <ImageButton            android:id="@+id/ib02"            android:layout_width="50dp"            android:layout_height="50dp"            android:background="@drawable/shape_red"            android:layout_margin="20dp"            android:onClick="button"            />        <ImageButton            android:id="@+id/ib03"            android:layout_width="50dp"            android:layout_height="50dp"            android:background="@drawable/shape_blue"            android:layout_margin="20dp"            android:onClick="button"            />    </LinearLayout></LinearLayout>

package th.zxq.com.quxianyundong;import android.animation.Animator;import android.animation.AnimatorListenerAdapter;import android.graphics.Color;import android.os.Bundle;import android.support.annotation.Nullable;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.ViewAnimationUtils;import android.widget.RelativeLayout;/** * Created by Administrator on 2017/7/24. */public class JieLouActivity extends AppCompatActivity {    private RelativeLayout relativeLayout;    private boolean b=false;    @Override    protected void onCreate(@Nullable Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_jl);        relativeLayout = (RelativeLayout) findViewById(R.id.rl);    }    public void button(View view)    {        switch (view.getId())        {            case R.id.ib01:                if(!b)                {                    setposition(relativeLayout);                    b=true;                }else                {                    inde(relativeLayout);                    b=false;                }                break;            case R.id.ib02:                setposition2(relativeLayout);                break;            case R.id.ib03:                setposition3(relativeLayout,view);                break;        }    }    public void setposition(View myView)    {        int cx = (myView.getLeft() + myView.getRight()) / 2;        int cy = (myView.getTop() + myView.getBottom()) / 2;        int finalRadius = Math.max(myView.getWidth(), myView.getHeight());        Animator anim =                ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);        myView.setVisibility(View.VISIBLE);        myView.setBackgroundColor(Color.GREEN);        anim.setDuration(1000);        anim.start();    }    public void setposition2(View myView)    {        int cx = (myView.getLeft() + myView.getRight()) / 2;        int cy = 0;        int finalRadius = Math.max(myView.getWidth(), myView.getHeight());        Animator anim =                ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);        myView.setVisibility(View.VISIBLE);        myView.setBackgroundColor(Color.RED);        anim.setDuration(1000);        anim.start();    }    public void setposition3(View myView,View view)    {        int[] location=new int[2];        view.getLocationInWindow(location);        int cx = location[0]+view.getWidth()/2;        int cy = location[1];        int finalRadius = Math.max(myView.getWidth(), myView.getHeight());        Animator anim = ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius);        myView.setVisibility(View.VISIBLE);        myView.setBackgroundColor(Color.BLUE);        anim.setDuration(1000);        anim.start();    }    /**     * 隐藏     * @param myView     */    public void inde(final View myView)    {        int cx = (myView.getLeft() + myView.getRight()) / 2;        int cy = (myView.getTop() + myView.getBottom()) / 2;        int initialRadius = myView.getWidth();        Animator anim = ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0);        anim.addListener(new AnimatorListenerAdapter() {            @Override            public void onAnimationEnd(Animator animation) {                super.onAnimationEnd(animation);                myView.setVisibility(View.INVISIBLE);            }        });        anim.start();    }}

以上的三个圆是用shape画的,形状颜色可以自行修改
ps;这个揭露动画如果执行完后是隐藏view的话,需要注意一点,隐藏view的上层显示的view将会一并呗隐藏掉。不可见。
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 两岁宝宝不吃蔬菜怎么办 两岁宝宝不爱吃蔬菜怎么办 四个月宝宝头有点歪怎么办 宝宝吃过了还闹怎么办 ddrops d3吃多了怎么办 ddrops d3滴多了怎么办 维生素d滴多了怎么办 ddrops最后滴不出来的怎么办 ddrops一次滴3滴怎么办 小孩子头睡偏了怎么办 7岁儿童头睡偏了怎么办 婴儿后脑睡平了怎么办 六个月宝宝免疫力低怎么办 十个月宝宝食烧怎么办 6个月宝宝感冒了怎么办 5个月宝宝腿短怎么办 5个月宝宝太瘦怎么办 宝宝喝了浓奶粉怎么办 一岁把尿不尿怎么办 五个月的宝宝大便干燥怎么办 婴儿便秘怎么办什么方法最有效 8个月小孩便秘怎么办 1个月新生儿便秘怎么办 新生儿头竖立0分怎么办 20天的宝宝便秘怎么办 出生23天的宝宝便秘怎么办 喝奶粉的宝宝便秘怎么办 抱孩子抱的驼背怎么办 4岁宝宝不拉屎怎么办 小朋友大便拉不出来怎么办 儿童便秘拉不出来怎么办 没感冒喉咙有痰怎么办 宝宝喂不进去药怎么办 新生儿只放屁不拉大便怎么办 新生儿腹胀不拉大便怎么办 8月宝宝咳嗽有痰怎么办 2个月婴儿惊吓怎么办 吃了米粉不拉屎怎么办 奇异果奶昔苦了怎么办 8个月宝宝偏瘦怎么办 一岁宝宝螺旋腿怎么办