▲ 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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • robotium android,Robotium 测试Android apk安装包

    robotium android,Robotium 测试Android apk安装包介绍要测试apk程序必须和我们编写的测试程序拥有相同的签名(signature)。如果没有apk程序的签名秘钥,就要去除apk程序的签名,然后再使用自己的key对其签名(这一步中,我们可以使用debugkey),已经有现成的工具可用,下载地址re-sign.jar,这个工具可以去掉apk程序的原签名,然后使用我们自己的debugkey对其签名。详细编写测试用例之前,我们需要知道apk程序的包名…

    2022年7月25日
    10
  • TLSF算法分析

    TLSF算法分析注:本文的大部分内容摘录自论文《TLSF:aNewDynamicMemoryAllocatorforReal-TimeSystems》,可以通过“科学上网”访问如下链接阅读原文:http://www.gii.upv.es/tlsf/files/ecrts04_tlsf.pdf。什么是TLSFTLSF是TwoLevelSegregatedFitmemoryal

    2022年6月30日
    24
  • SQL查询–约束「建议收藏」

    SQL查询–约束「建议收藏」在慕课网上学习时记的关于oracle中约束概念的基础笔记,当初一直对约束的概念不清不楚的,所以找了些资料来看约束是数据库用来确保数据满足业务规则的手段约束的作用:定义规则、确保完整性1.非空约束

    2022年7月2日
    23
  • xsync配置

    xsync配置在~/bin建立xsync:#!/bin/bash#1获取输入参数个数,如果没有参数,直接退出pcount=$#if((pcount==0));thenechonoargs;exit;fi#2获取文件名称p1=$1fname=`basename$p1`echofname=$fname#3获取上级目录到绝对路径pdir=`cd-P$(dirname$p1);pwd`echopdir=$pdir#4获取当前用户名称us

    2022年6月2日
    108
  • C 移位运算

    C 移位运算移位运算分为左移 lt lt 与右移 gt gt 包含逻辑移位 logicalshift 和算术移位 arithmeticsh 二者区别如下 1 逻辑移位 移出去的位丢弃 空缺位 vacantbit 用 0 填充 2 算术移位 移出去的位丢弃 空缺位 vacantbit 用符号位来填充 移位算只能作用于整数 不能作用于浮点数 对于无符号整数与有符号整数 左移

    2025年10月30日
    3

发表回复

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

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