【安卓】自己定义基于onDraw的随意动画(不不过平移/旋转/缩放/alpha)、!
思路:
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)、!的更多相关文章
- 2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥?
2019年5月1日起安卓应用应基于API 26开发,那么API等级是啥? 转 https://www.ithome.com/html/android/372234.htm 据泰尔终端实验室公众微信 ...
- 注意padding-top 百分比定义基于父元素宽度的百分比上内边距!!是基于宽度
定义和用法 padding-top 属性设置元素的上内边距(空间). 说明 该属性设置元素上内边距的宽度.行内非替换元素上设置的上内边距不会影响行高计算,因此,如果一个元素既有内边距又有背景,从视觉上 ...
- 基于HTML5 Tab选项卡动画切换特效
基于HTML5 Tab选项卡动画切换特效.这是一款基于HTML5+CSS3实现的带有动画切换效果的Tab选项卡插件cbpFWTabs.效果图如下: 在线预览 源码下载 实现的代码. html代码: ...
- AIDL安卓接口定义语言
Android Interface Definition Language简称AIDL翻译为 :安卓 接口 定义 语言 AIDL:进程间通信.Android ...
- 基于animation.css实现动画旋转特效
分享一款基于animation.css实现动画旋转特效.这是一款基于CSS3实现的酷炫的动画旋转特效代码.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class ...
- 一款基于jquery ui的动画提交表单
今天要给大家分享一款基于jquery ui的动画提交表单.这款提交表单的的效果是以动画的形式依次列表所需填写的信息.效果非常不错,效果图如下: 在线预览 源码下载 实现的代码. html代码: & ...
- 分享一款基于jquery的圆形动画按钮
之前为大家介绍过一款纯css3实现的圆形旋转分享按钮.今天要给大家带来一款基于jquery的圆形动画按钮.这款按钮鼠标经过的时候以边框转圈,然后逐渐消息,在实例中给出了四种颜色的demo.效果图如下: ...
- 基于js全屏动画焦点图幻灯片
今天给大家分享一款基于js全屏动画焦点图幻灯片.这款焦点图内的内容以动画形式出现和消失.效果图如下: 在线预览 源码下载 实现的代码. html代码: <div class="sl ...
- 一款基于jquery的喜欢动画按钮
今天给大家带来一款基于jquery的喜欢动画按钮.这个实例中给了三种动画特效.效果图如下: 在线预览 源码下载 实现的代码. html代码: <p class='heading'> C ...
随机推荐
- C#应用视频教程2.4 OPENGL虚拟仿真介绍
这一部分我们首先实现视图控制(包括了平移/旋转/缩放),前面我们已经讲过,通过lookat一个函数,或者通过translate+rotate两个函数,都能实现视图的控制(两个函数的方式比较简单,但是通 ...
- 软件开发工具——Make
掌握Makefile的使用方法和工作流程: 掌握make工具变量的相关知识,包括其引用.定义及分类等: 掌握Makefile常见的函数含义: 掌握Makefile与shell命令行的通信方法: 掌握M ...
- Cg入门21:Fragment shader - 2D纹理採样
体纹理:是啥? tex2D 曾经仅仅能在Fragment程序中纹理採样 UV坐标系:事实上点为左下角,范围为[0,1].U为x轴,V为y轴 watermark/2/text/aHR0cDovL2Jsb ...
- xampp集成包如何重置mysql的密码
转自:http://blog.sina.com.cn/s/blog_4b2bcac501013s4l.html 安装使用xampp,装好后root默认没有密码,phpmyadmin是用config文件 ...
- js无缝滚动,不平滑(求高人指点)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xht ...
- 监听OSGi服务
方法一:实现ServiceListener接口: package org.riawork.demo.web; import org.osgi.framework.BundleActivator; im ...
- Linux命令-目录处理命令:mkdir
mkdir /tmp/beijing mkdir -p /tmp/shijiazhuang/yuhuaqu 一条命令可以同时创建父目录和子目录 mkdir /tmp/beijing/chaoyangq ...
- 常用RGB颜色表
作者:张家珩2005-12-02 20:51分类:默认分类 R G B 值 R G B 值 R G B 值 黑色 0 0 0 #000000 黄色 255 255 0 #FFFF0 ...
- PHP部分常见算法
撰于:http://blog.csdn.net/caleng/article/details/5276403
- maven optional可选依赖
应用场景:projectA 依赖projectB, projectB 依赖projectC时 <dependency> <groupId>com.itear.projectC ...