首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在Android API19中创建圆形显示动画?

在Android API19中创建圆形显示动画可以通过以下步骤实现:

  1. 创建一个自定义的View类,继承自View,并重写onDraw方法。
代码语言:txt
复制
public class CircleView extends View {
    private Paint mPaint;
    private int mRadius;

    public CircleView(Context context) {
        super(context);
        init();
    }

    public CircleView(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    private void init() {
        mPaint = new Paint();
        mPaint.setColor(Color.BLUE);
        mPaint.setStyle(Paint.Style.FILL);
        mRadius = 0;
    }

    @Override
    protected void onDraw(Canvas canvas) {
        int width = getWidth();
        int height = getHeight();
        int centerX = width / 2;
        int centerY = height / 2;

        canvas.drawCircle(centerX, centerY, mRadius, mPaint);
    }

    public void setRadius(int radius) {
        mRadius = radius;
        invalidate();
    }
}
  1. 在Activity中使用这个自定义的View,并创建一个ValueAnimator来控制半径的变化。
代码语言:txt
复制
public class MainActivity extends AppCompatActivity {
    private CircleView mCircleView;
    private ValueAnimator mAnimator;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        mCircleView = findViewById(R.id.circle_view);

        mAnimator = ValueAnimator.ofInt(0, 200);
        mAnimator.setDuration(2000);
        mAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            @Override
            public void onAnimationUpdate(ValueAnimator animation) {
                int radius = (int) animation.getAnimatedValue();
                mCircleView.setRadius(radius);
            }
        });
        mAnimator.start();
    }
}
  1. 在布局文件中添加CircleView。
代码语言:txt
复制
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity">

    <com.example.circleanimation.CircleView
        android:id="@+id/circle_view"
        android:layout_width="200dp"
        android:layout_height="200dp" />

</RelativeLayout>

这样就可以在Android API19中创建一个圆形显示动画。通过改变ValueAnimator的范围和持续时间,可以调整动画的速度和大小。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Androidactivity从创建显示的基本介绍

前言 说道Android的Activity,如果你做过iOS开发的话,Activity类似于iOS的ViewController(视图控制器)。在应用能看到的东西都是放在活动的。...iOS的ViewController也是有自己的生命周期的,了解Activity或者ViewController的生命周期是很有必要的,本文将详细的给大家介绍关于Androidactivity从创建显示的相关内容...activity是我们平常开发最常用的一个组件,我们有必要了解activity的创建以及显示的过程,这些应该作为我们的储备知识。...Activity的创建 Activity的创建以及初始化的过程是在ActivityThread#performLaunchActivity方法,在这个方法,有以下几个关键点, 创建Activity...这个方法非常非常的长,但是在这个方法,有非常关键的performMeasure,performLayout,performDraw等方法,至此,进入的View的的三大过程,,三大过程之后,就显示在我们面前了

1.4K20

何在Android避免创建不必要的对象

另外,当将原始数据类型的值加入集合时,也会发生自动装箱,所以这个过程也是有对象创建的。...关于Java的自动装箱与拆箱,参考文章Java的自动装箱与拆箱 谨慎选用容器 Java和Android提供了很多编辑的容器集合来组织对象。...详细了解LaunchMode,阅读文章深入讲解AndroidActivity launchMode Activity处理onConfigurationChanged 这又是一个关于Activity对象创建相关的...不要过多创建线程 在android,我们应该尽量避免在主线程执行耗时的操作,因而需要使用其他线程。...想要深入了解注解,可以阅读详解Java的注解 选用对象池 在Android中有很多池的概念,线程池,连接池。包括我们很长用的Handler.Message就是使用了池的技术。

2.4K20

带你快速掌握Flutter的视图(Widgets)

何在布局添加或删除组件? 如何对 Widget 做动画? 如何绘图(Canvas draw/paint)? 如何构建自定义Widgets? 如何设置Widget的透明度?...谁是FlutterView? 在Android,View是屏幕上显示的所有内容的基础, 按钮、工具栏、输入框等一切都是View。 在 iOS ,构建 UI 的过程中将大量使用 view 对象。...StatelessWidgets适用于当我们描述的用户界面不依赖于对象的配置信息时。 例如,在Android/iOS,我们需要用ImageView/UIImageView来显示logo。...如何对Widget做动画? 在Android,我们可以通过XML创建动画或调用view.animate()。...在 Flutter ,使用动画库来包裹 Widgets,而不是创建一个动画 Widget。

10.9K10

Android 8.0 之自适应图标

而一向提倡使用异形图标、讲求图标「个性」的 Google 在 Android 7.1 引入了圆形图标规范,在 Android 8.0 还将带来全新的自适应图标特性——Google 似乎想通过应用图标规范来触及...例如,一个app 如果采用了自适应图标,那么它就可以在一家的 OEM 厂商的手机上显示圆形,在另一家 OEM 厂商的手机上显示为方形。...,视差或跳动 ?...动画视觉效果由所支持自适应图标的启动器生存,视觉效果可能因启动器的不同而有差别 OEM 厂商所提供的遮罩是,自中点起至少 33 dp 范围内的区域 在XML创建自适应图标 要给你的应用创建自适应图标,...接下来需要在资源文件及创建我们的自适应图标,在 Android 8.0 自适应图标存在于 res/mipmap-anydpi/ 文件夹下,使用 元素为你的图标定义前景和背景图层

1.3K40

【RecyclerView】二、RecyclerView 简介 ( RecyclerView 特点 | RecyclerView 涉及到的类 )

RecyclerView.ViewHolder , RecyclerView.Adapter , LayoutManager ; RecyclerView.ViewHolder 用于 定义 RecyclerView 每个独立元素的显示的组件..., 创建时不关联数据 , 创建后会在 RecyclerView.Adapter 适配器 的 onBindViewHolder 方法为其关联数据 ; RecyclerView.Adapter 主要作用是..., 网格布局管理器 GridLayoutManager , 瀑布流布局管理器 StaggeredGridLayoutManager , 也可以 自定义实现各种奇形怪状的布局管理器 , 自定义圆形的布局管理器..., ItemAnimator ; ItemDecoration 用于设置每个布局元素的 间隔样式 ; ItemAnimator 用于设置布局元素的 动画效果 , 添加动画 , 删除动画 等 ; 四、...RecyclerView 相关资料 ---- 官方文档 : 使用 RecyclerView 创建动态列表 : https://developer.android.google.cn/guide/topics

4.9K00

Android程序,该怎么做图片渐变与旋转动画

除了欢迎界面之外,Android程序的引导页面也可以通过透明渐变动画实现比较吸引用户的动画效果。...当我们在手机上用网易音乐软件播放音乐时,当时的播放界面界面中间的一个圆形图片是一直旋转的动画效果,播放界面如下图这样。...image.png 欢迎界面的透明渐变动画和网易音乐播放界面圆形图片的旋转动画是如何实现的呢? 其实在Android系统为我们提供的补间动画中就包含了透明渐变动画和旋转动画。...通过本篇文章,希望大家能够掌握如何在Android程序实现图片的透明渐变动画和旋转动画。...Android系统的补间动画除了有透明渐变动画和旋转动画,还有缩放动画(ScaleAnimation)、平移动画(TranslateAnimation),缩放动画和平移动画会在下一篇文章给大家介绍,

1.3K20

android ProgressBar(进度条)

:如果设置成true,则进度条不精确显示进度 android:indeterminateDrawable:设置不显示进度的进度条的Drawable对象 android:indeterminateDuration...下面我们就来讲解下实际开发我们对进度条的处理! 2.使用动画来替代圆形进度条 第一个方案是,使用一套连续图片,形成一个帧动画,当需要进度图的时候,让动画可见,不需要 的时候让动画不可见即可!...另外其实Progressbar本身有一个indeterminateDrawable,只需把 这个参数设置成上述的动画资源即可,但是进度条条的图案大小是不能直接修改的,需要Java代码 修改,如果你设置了宽高...,而且这个宽高过大的时候,你会看到有多个进度条...自己权衡下吧~ 3.自定义圆形进度条 相信你看完2会吐槽,卧槽,这么坑爹,拿个动画来坑人,哈哈,实际开发中都这样,当然上述 这种情况只适用于不用显示进度的场合...,如果要显示进度的场合就没用处了,好吧,接下来看下 网上一个简单的自定义圆形进度条!

1.2K20

Android实现Reveal圆形Activity转场动画的完整步骤

前言 Activity的转场动画很早就有,但是太过于单调,样式也不好看,本文将给大家介绍了关于Android实现Reveal圆形Activity转场动画的相关内容,分享出来供大家参考学习,下面话不多说了...Reveal圆形Activity转场动画效果先从A到B,那么基本方案如下: 确定要显示圆形动画中心起点位置 通过Intent将起点位置从Activity A传递B Activity B主题需要是透明的...因为当不需要执行返回动画的时候,要把Activity A销毁,这时候一定是在后台销毁的,所以要把主题相关设置为透明,不然会在Activity B显示Activity A销毁界面。...在这段代码,把Activity A开始执行Reveal圆形动画的坐标点传递给Activity B,因为动画是在Activity B执行的。...因为动画效果是从Activity A过度到Activity B,也就是启动Activity B一切准备就绪之后,显示其布局。

1.2K20

一文彻底搞清楚 Material Design

TranslationZ:动态海拔高度偏移高度,是一个偏移的距离,是用来作动画效果,否则不要使用。 Translation Z 是动态的,当创建一个项目,增加一个按钮,当按下按钮会阴影变大了。...如果释放按钮,ViewPropertyAnimator 播放动画,将 translationZ 从 6 dp变到 0 dp。我们可以给我们的视图创建自定义状态列表动画,添加到视图上。...轮廓 默认情况下,所有的view都是矩形的,虽然可以给view设置背景圆形的图片,即可以在界面显示圆形的内容,但是view的大小实际上依然是矩形,并且设置的图片实际上也是矩形的,只是圆形以外的区域是透明色...new MyViewOutlienProvider); // 如果不想让视图有投射阴影,可以设置轮廓提供者为 null 裁剪 View 的裁剪是指将 View 按照轮廓裁剪,能改变 View 的形状,圆形头像...详见 Button 参考Materila Design中文 Materila Design官网 彻底理解Android的阴影 各种阴影 中文官网Material动画效果

2.1K10

Android Heroes Reading Notes 5

(7)MD动画效果 Ripple效果 水波纹效果有两种:波纹有边界和波纹无边界。前者是指波纹被限制在控件的边界,后者指波纹不会限制在控件边界,会呈圆形发放出去。...方法可以创建一个RevealAnimator动画,代码如下,其中centerX/centerY表示动画开始的位置,startRadius和endRadius分别表示动画的起始半径和结束半径。...return new RevealAnimator(view, centerX, centerY, startRadius, endRadius); } 下面是一个例子,该例子会呈现出图片从一个点以圆形的方式放大到图片大小的动画效果...在Android 5.X,可以使用动画来作为视图改变的效果,有两种方式来实现该动画:StateListAnimator和animated-selector。...通知的显示等级 Android 5.x将通知分为了三个等级: VISIBILITY_PRIVATE:表明只有当没有锁屏的时候才会显示; VISIBILITY_PUBLIC:表明任何情况下都会显示; VISIBILITY_SECRET

88810

Android悬浮窗不用动态申请权限方法

而这个权限到了android6.0后需要动态申请,加到app,运行程序时候会让弹出让你打开上层窗口的权限,有点不太友好。...最近手机里的直播软件熊猫TV,虎牙直播等,在退出直播房间时右下角会有当前房间的直秋视频继续存在,这里肯定也是用到了悬浮窗,但是我记得在安装这些APP时并没有发现它们会弹出让你打开上层窗口的权限控制,于是决定查找一下这方面的资料看一下...在度娘的帮助下,找到了下面这篇文章《Android无需权限显示悬浮窗, 兼谈逆向分析app》 由于无法超链接,这里贴上地址:https://www.jianshu.com/p/167fd5f47d5c...也就是说悬浮窗的WindowManager.LayoutParams这个参数里面的type,我们把他的值设置为TYPE_TOAST时,是不需要通过android来申请权限的,但是在api19以下的,也就是...android4.3及以下的版本,如果用TYPE_TOAST悬浮窗正常显示, 但不能接受触摸事件.

4.9K21

带你领略 ConstraintLayout 1.1 的新功能

Studio 的可视化编辑器来为您生成绝大多数的 UI,进而达到简化 Android 创建复杂布局的目的。...您可以将其视为制作虚拟组的一种方式 ,因为它不会将此组添加到视图层次结构。 在布置国际化字符串或显示用户生成的无法预测大小的内容时,屏障非常有用。 ? 屏障允许您通过几个视图来创建一个约束。...您可以通过指定要偏移的半径和**角度来创建径向菜单。 创建圆形约束时,请注意,角度从顶部开始并顺时针进行。...你可以在代码创建一个ConstraintSet,或者从一个布局文件中加载它。...此功能将使您的 ConstraintSet 的所有布局的更新都通过动画来呈现。

1.5K20

Anroid Wear OS 手表应用开发 - UI

复制代码 布局 常见的表盘有方形和圆形两种,使用普通布局的情况下,可能会出现这种情况: 为了使圆形表盘上的内容不超出边界,同时兼容方形表盘,我们可以使用 BoxInsetLayout 这个布局: 复制代码 这样可以在保证方形表盘不受影响的情况下,圆形布局的内容,不会超过显示边界: 导航抽屉栏 为了节省宝贵的显示空间,通常手表应用是没有标题栏的,在使用 ViewPager 的时候,也没有 TabLayout...: 露出部分默认会显示操作栏第一项的图标,可以在布局添加 app:showOverflowInPeek="true",让它显示竖直三个点的省略图标。...确认动画 当处理完某个业务之后,我们通常需要给用户一个处理成功或失败的提示,在 Wear OS 上,我们可以用一个 Activity 来展示确认动画。...ConfirmationActivity 是官方提供的用来展示确认动画的 Activity。

2.4K30

【Flutter】Hero 动画 ( Hero 实现径向动画 | Hero 组件 createRectTween 设置 )

文章目录 ◯、Hero 构造函数 一、圆形方形组件 二、创建页面 1 的组件 ( Hero 组件 1 ) 三、创建页面 2 的组件 ( Hero 组件 2 ) 四、完整代码示例 五、相关资源 ◯、Hero...; required this.child : 不能为空 , 普通的 Widget 组件 , Hero 动画作用的组件 ; Hero 动画可以实现径向动画 , 径向动画指的是组件形状可变的动画 , 圆形变方形..., 方形变三角形 ; Hero 径向动画 与 普通动画的区别就是是否设置了 createRectTween 参数 ; 一、圆形方形组件 ---- 圆形方形变化的组件 : 该组件可以根据不同的参数实现圆形到方形的变化...Hero 径向动画的主要作用组件 , 该动画执行前 , 组件是圆形的 , 执行后组件是方形的 , 这就是改变了外层的 ClipOval 组件的大小 , 导致形状改变 ; 二、创建页面 1 的组件 (...是圆形还是方形 , 主要是控制 OvalRectWidget 组件的宽高 , 这里设置的宽高相当于上面的 " ① 方形裁剪组件 " 设置 , 整个组件没有被裁剪到 , 显示的是方形组件 ; 创建页面

1.1K40
领券