思路:

1.基于时间的显示映射。如:给定度数,显示圆弧,加上时序,就可以有圆弧动画的效果

2.给定时序。

用于驱动动画的一帧帧绘制

方案一、基于ObjectAnimator。动画运作时会调用degree相应set函数(基于放射调用),即setDegree。

ObjectAnimator ani=ObjectAnimator.ofInt(myView, "degree", 0,300);

ani.start();

注:1>混编后,默认会将setDegree混掉,导致找不到函数,故混编后这样的机制会失效。

解决方法是1.proguard中防止该段代码混编(详细方法百度) 2.用法二

2>ObjectAnimator在3.0后才支持,可使用NineOldAndroids库,效果全然一样。

方案二、仍然基于ObjectAnimator。但基于回调,这样的方法未用到反射,故混编时仍ok

ObjectAnimator ani=ObjectAnimator.ofInt(myView, new Prop(), 0,300);

ani.start();

class Prop extends Property<View, Integer> {

		public Prop() {
// TODO Auto-generated constructor stub
super(Integer.class, "kk");
} @Override
public void set(View object, Integer value) {
// TODO Auto-generated method stub
((MyView1)object).setDegree(value);
} @Override
public Integer get(View object) {
// TODO Auto-generated method stub
return null;
}
};

方案三、用animation提供时序。

interpolatedTime为0~1,即时间的百分比。

Animation ani=new Animation() {
@Override
protected void applyTransformation(float interpolatedTime,
Transformation t) {
// TODO Auto-generated method stub
myView.setDegree((int)(interpolatedTime*300f));
}
};
ani.setDuration(3000);
myView.startAnimation(ani);

//===========================================================================

自己定义视图,setDegress可改变圆弧角度:

private class MyView1 extends ImageView {

		public int degree = 0;

		public MyView1(Context ct) {
// TODO Auto-generated constructor stub
super(ct); } @Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas); Rect r = new Rect();
getLocalVisibleRect(r);
canvas.drawArc(new RectF(r), 0, degree, true, pt);
} public void setDegree(int degree) {
this.degree = degree;
invalidate();
}
}

效果:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FybGluMzIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="">   

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvY2FybGluMzIx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" width="310" height="320" alt="">

【安卓】自己定义基于onDraw的随意动画(不不过平移/旋转/缩放/alpha)、!的更多相关文章

  1. 2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥?

    2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥? 转 https://www.ithome.com/html/android/372234.htm   据泰尔终端实验室公众微信 ...

  2. 注意padding-top 百分比定义基于父元素宽度的百分比上内边距!!是基于宽度

    定义和用法 padding-top 属性设置元素的上内边距(空间). 说明 该属性设置元素上内边距的宽度.行内非替换元素上设置的上内边距不会影响行高计算,因此,如果一个元素既有内边距又有背景,从视觉上 ...

  3. 基于HTML5 Tab选项卡动画切换特效

    基于HTML5 Tab选项卡动画切换特效.这是一款基于HTML5+CSS3实现的带有动画切换效果的Tab选项卡插件cbpFWTabs.效果图如下: 在线预览   源码下载 实现的代码. html代码: ...

  4. AIDL安卓接口定义语言

    Android    Interface Definition  Language简称AIDL翻译为 :安卓       接口      定义        语言 AIDL:进程间通信.Android ...

  5. 基于animation.css实现动画旋转特效

    分享一款基于animation.css实现动画旋转特效.这是一款基于CSS3实现的酷炫的动画旋转特效代码.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class ...

  6. 一款基于jquery ui的动画提交表单

    今天要给大家分享一款基于jquery ui的动画提交表单.这款提交表单的的效果是以动画的形式依次列表所需填写的信息.效果非常不错,效果图如下: 在线预览   源码下载 实现的代码. html代码: & ...

  7. 分享一款基于jquery的圆形动画按钮

    之前为大家介绍过一款纯css3实现的圆形旋转分享按钮.今天要给大家带来一款基于jquery的圆形动画按钮.这款按钮鼠标经过的时候以边框转圈,然后逐渐消息,在实例中给出了四种颜色的demo.效果图如下: ...

  8. 基于js全屏动画焦点图幻灯片

    今天给大家分享一款基于js全屏动画焦点图幻灯片.这款焦点图内的内容以动画形式出现和消失.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div class="sl ...

  9. 一款基于jquery的喜欢动画按钮

    今天给大家带来一款基于jquery的喜欢动画按钮.这个实例中给了三种动画特效.效果图如下: 在线预览   源码下载 实现的代码. html代码: <p class='heading'> C ...

随机推荐

  1. KRBTabControl(中文)Windows选项卡控件

    本文阐述了如何在C#使自定义Windows选项卡控件. Download demo project - 82.4 KB Download source - 252 KB 介绍 本文讨论如何使用.NET ...

  2. CentOS系统时间同步(NTP)

    CentOS系统时间同步的步骤如下: 新装的CentOS系统服务器可能设置了错误的,需要调整时区并调整时间. 如下是CentOS系统使用NTP来从一个时间服务器同步把当前时区调整为上海就是+8区,想改 ...

  3. apache服务器多端口支持

    本示例支持80,82两端口 修改conf/httpd.conf文件: Listen 改为 Listen Listen # Virtual hosts #Include conf/extra/httpd ...

  4. 设计模式之Programming to an Interface, not anImplementation 程序指向接口,而不是实现

    Class inheritance is basically just a mechanism for extending an application's functionality by reus ...

  5. Java程序实现密钥库的维护

    1 Java程序列出密钥库所有条目 import java.util.*; import java.io.*; import java.security.*; public class ShowAli ...

  6. cookie 封装

    1.代码 ;(function (factory) { var registeredInModuleLoader; if (typeof define === 'function' && ...

  7. Asp.Net MVC4开发二: Entity Framework在Asp.Net MVC4中的应用

    ORM作为一种数据库訪问机制已广泛地应用于各种项目其中,在.Net开发中,应用比較广泛的ORM框架大致有以下几个: 官方支持的有:Linq to SQL.Entity Framework.三方的有:N ...

  8. iOS动画进阶 - 实现炫酷的上拉刷新动效

    移动端訪问不佳,请訪问我的个人博客 近期撸了一个上拉刷新的小轮子.仅仅要遵循一个协议就能自己定义自己动效的上拉刷新和载入,我自己也写了几个动效进去,以下是一个比較好的动效的实现过程 先上效果图和git ...

  9. Android开发之Shortcuts, LiveFolder, Widget

    2013-07-05 桌面组件包括:快捷方式(Shortcuts),实时文件夹(Live Folder),桌面插件(Widget).   快捷方式用于启动应用程序的某个组件,例如Activity, S ...

  10. Ubuntu下添加新分区并设置挂载点

    Ubuntu下添加新分区并设置挂载点   最近在做Android项目,可是解压根文件系统以后,就报警说硬盘不够.当初设置使用的大小为15G.不过扩展分区还是很方便的.当然首先你得设置添加使用的硬盘大小 ...