▲ Android 自定义搜索附近的动画

▲ Android 自定义搜索附近的动画

最近把视图动画翻出来看一下,要知道动画主要分为两个主类,视图动画&属性动画。我这个功能就是用视图动画来实现的。老规矩先看一下效果图

效果图
这里写图片描述

实现思路
用的是一个缩放的动画,还有一个渐变的动画来实现的,放大的时候透明度逐渐变弱。细心的你一定看到有4个圆环,没错我这里用了4个ImageView,来执行这个这个组合动画,只不过每个View执行的时候,延迟一些时间。

上代码

(布局文件)

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#f8f8f8"
    android:orientation="vertical">

    <ImageView
        android:id="@+id/iv_x1"
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:background="@drawable/scan_cover"
        />

    <ImageView
        android:id="@+id/iv_x2"
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:clickable="true"
        android:background="@drawable/scan_cover"
        />

    <ImageView
        android:id="@+id/iv_x3"
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:clickable="true"
        android:background="@drawable/scan_cover"
        />

    <ImageView
        android:id="@+id/iv_x4"
        android:layout_width="140dp"
        android:layout_height="140dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:clickable="true"
        android:background="@drawable/scan_cover"
       />

    <TextView
        android:id="@+id/start_can"
        android:layout_width="135dp"
        android:layout_height="135dp"
        android:layout_gravity="center"
        android:layout_marginTop="30dp"
        android:background="@mipmap/icon_f" />

</FrameLayout>

scan_cover XML

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval">
 <solid android:color="#FF6C2F"></solid>
</shape>

动画 scale_alpha

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="3100">
    <scale
        android:fromXScale="1.0"
        android:fromYScale="1.0"
        android:pivotX="50%"
        android:pivotY="50%"
        android:repeatCount="infinite"
        android:toXScale="3"
        android:toYScale="3" />
    <alpha
        android:repeatCount="infinite"
        android:fromAlpha="0.5"
        android:toAlpha="0" />
</set>

逻辑代码


/**
 * Created by Xia_焱 on 2018/9/1.
 * e-mail:XiahaotianV@163.com
 */

public class AnimationActivity  extends BaseActivity{

    private ImageView circle1;
    private ImageView circle2;
    private ImageView circle3;
    private ImageView circle4;

    @Override
    public int getLayoutId() {
        return R.layout.activity_animation;
    }

    @Override
    protected void initView() {
        final Animation animation1 = android.view.animation.AnimationUtils.loadAnimation(AnimationActivity.this, R.anim.scale_alpha);
        final Animation animation2 = android.view.animation.AnimationUtils.loadAnimation(AnimationActivity.this, R.anim.scale_alpha);
        final  Animation animation3 = android.view.animation.AnimationUtils.loadAnimation(AnimationActivity.this, R.anim.scale_alpha);
        final Animation animation4 = android.view.animation.AnimationUtils.loadAnimation(AnimationActivity.this, R.anim.scale_alpha);

        circle1 = findViewById(R.id.iv_x1);
        circle2 = findViewById(R.id.iv_x2);
        circle3 = findViewById(R.id.iv_x3);
        circle4 = findViewById(R.id.iv_x4);
        TextView start_can = findViewById(R.id.start_can);
        start_can.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                circle1.startAnimation(animation1);

                animation2.setStartOffset(600);
                circle2.startAnimation(animation2);

                animation3.setStartOffset(1200);
                circle3.startAnimation(animation3);

                animation4.setStartOffset(1800);
                circle4.startAnimation(animation4);
            }
        });
    }

    @Override
    protected void initData() {

    }
}

这样就可以实现了,那个基类我偷点懒 =_=! 就不换了

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/2846.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 关于opacity属性的探究

    关于opacity属性的探究关于opacity属性的探究上问题!!在前一段时间我朋友和我讨论到了opcaity的属性问题问题如下:代码如下清重点关注opcaity<!–css样式–><style>.boxfather{width:500px;height:500px;background-color:blue;text-align:cen

    2022年5月26日
    36
  • ubuntu12.04 安装配置jdk1.7

    ubuntu12.04 安装配置jdk1.7

    2021年12月14日
    49
  • C语言单元测试框架详解:第一篇

    C语言单元测试框架详解:第一篇目录一 单元测试定义二 C 语言单元测试框架汇总一 单元测试定义单元测试是指对软件中的最小可测试单元进行检查和验证 如 C 语言中单元指一个函数 Java 里单元指一个类 单元测试像一个古董 时间越久价值越大 二 C 语言单元测试框架汇总不同编程语言的测试框架不同 C 语言常见单元测试框架有 1 Check2 Gtest GoogleTest 3 CuTest4 Cunit5 CppUTest MicrosoftCpp 6 C Test

    2025年10月24日
    4
  • 3.5使用RangeValidator控件

    3.5使用RangeValidator控件使用RangeValidator控件检测表单字段的值是否在指定的最小值和最大值之间五个属性:ControlToValidate—被验证的表单字段的IDText--验证失败时显示的错误信息MininumValueMaxinumValueType-比较类型:String,Integer,Double,Date和Currency默认为String[code…

    2022年7月14日
    15
  • 西门子scl语言运算符_西门子烤箱怎么设置语言中文

    西门子scl语言运算符_西门子烤箱怎么设置语言中文软硬件平台软件是博图TIAv15,硬件是西门子300系列PLC简介使用scl语言编写一个FC子程序,对模拟量进行处理,对模拟数据进行转换。详细介绍添加新块,添加一个FC块,语言选择scl添加变量,输入型变量5个,一个运算后输出变量,3个中间变量,用于计算,存放中间计算结果,IF#in<=#i_minTHEN//判断输入值是否低于模拟量设定下限值#out:=#r_min;//输出直接为浮点数设定值下限END_IF;IF#in&gt

    2022年9月28日
    5
  • linux命令大全(手册)_Linux高频命令汇总

    linux命令大全(手册)_Linux高频命令汇总史上最全的Linux常用命令汇总(超全面!超详细!)收藏这一篇就够了!

    2022年8月22日
    6

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号