android的动画实例
package src.com;
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.PixelFormat;
import android.graphics.drawable.Drawable;
public class ProxyDrawable extends Drawable {
private Drawable mProxy;//画图对象
public ProxyDrawable(Drawable target){//构造函数
mProxy = target;
}
public Drawable getProxy(){//获取新对象
return mProxy;
}
public void setProxy(Drawable proxy){//设置画图对象
if( proxy != this ){
mProxy = proxy;
}
}
@Override
public void draw(Canvas canvas) {//画图
if( mProxy != null ){
mProxy.draw(canvas);
}
}
@Override
public void setAlpha(int alpha) {//设置透明度
if( mProxy != null ){
mProxy.setAlpha(alpha);
}
}
@Override
public void setColorFilter(ColorFilter cf) {//设置颜色过滤
if( mProxy != null ){
mProxy.setColorFilter(cf);
}
}
@Override
public int getOpacity() {//获取透明度
//return 0;
return mProxy != null ? mProxy.getOpacity() : PixelFormat.TRANSPARENT;
}
@Override
public int getIntrinsicWidth() {//返回固有的宽度
//return super.getIntrinsicWidth();
return mProxy != null ? mProxy.getIntrinsicWidth() : -1;
}
@Override
public int getIntrinsicHeight() {//返回固有的高度
//return super.getIntrinsicHeight();
return mProxy != null ? mProxy.getIntrinsicHeight() : -1;
}
@Override
public void setDither(boolean dither) {//设置抖动
//super.setDither(dither);
if( mProxy != null ){
mProxy.setDither(dither);
}
}
@Override
public void setFilterBitmap(boolean filter) {
//super.setFilterBitmap(filter);
if( mProxy != null ){
mProxy.setDither(filter);
}
}
}
package src.com;
import android.graphics.Canvas;
import android.graphics.drawable.Drawable;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.animation.Transformation;
public class AnimateDrawable extends ProxyDrawable {
private Animation mAnimation;
private Transformation mTransformation = new Transformation();
public AnimateDrawable(Drawable target) {
super(target);
}
public AnimateDrawable(Drawable target, Animation animation){
super(target);
mAnimation = animation;
}
public Animation getAnimation() {
return mAnimation;
}
public void setAnimation(Animation anim){
mAnimation = anim;
}
public boolean hasStarted(){
return mAnimation != null && mAnimation.hasStarted();
}
public boolean hasEnded(){
return mAnimation != null && mAnimation.hasEnded();
}
@Override
public void draw(Canvas canvas) {
//super.draw(canvas);
Drawable dr = getProxy();
if( dr != null ){
int sc = canvas.save();
Animation anim = mAnimation;
if( anim != null ){
anim.getTransformation(
AnimationUtils.currentAnimationTimeMillis(),
mTransformation);
canvas.concat(mTransformation.getMatrix());
}
dr.draw(canvas);
canvas.restoreToCount(sc);
}
}
}
package src.com;
import android.app.Activity;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
public class AnimationActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(new AnimationView(this));
}
private static class AnimationView extends View{
private AnimateDrawable mDrawable;
public AnimationView(Context context){
super(context);
Drawable pic = context.getResources().getDrawable(R.drawable.mountain);
pic.setBounds(0, 0, pic.getIntrinsicWidth(), pic.getIntrinsicHeight());
Animation move = new TranslateAnimation(0, 150, 0, 300);
move.setDuration(5000);
move.setRepeatCount(-1);
move.initialize(0, 0, 0, 0);
mDrawable = new AnimateDrawable(pic, move);
move.startNow();
}
@Override
protected void onDraw(Canvas canvas) {
//super.onDraw(canvas);
canvas.drawColor(Color.GREEN);
mDrawable.draw(canvas);
invalidate();
}
}
}
android的动画实例相关推荐
- android 属性动画实例,Android属性动画完全解析 中 ,ValueAnimator和ObjectAnimator的高级用法...
大家好,在上一篇文章当中,我们学习了Android属性动画的基本用法,当然也是最常用的一些用法,这些用法足以覆盖我们平时大多情况下的动画需求了.但是,正如上篇文章当中所说到的,属性动画对补间动画进行了 ...
- android 属性动画实例,Android 属性动画Animator工具类代码案例
代码分享-> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ packa ...
- android 弹幕动画,实例解析如何在Android应用中实现弹幕动画效果
在B站或者其他视频网站看视频时,常常会打开弹幕效果,边看节目边看大家的吐槽.弹幕看起来很有意思,今天我们就来实现一个简单的弹幕效果. 从直观上,弹幕效果就是在一个ViewGroup上增加一些View, ...
- android高仿奇艺影视,android仿爱奇艺加载动画实例
本篇文章介绍了android仿爱奇艺加载动画实例,具体代码如下: 效果图: 用到的知识点: Path ValueAnimator 如果对Path和ValueAnimator还不熟悉推荐去看这几个大神的 ...
- android 属性动画失败,AndroidAnimationExercise
AndroidAnimationExercise 这是一个关于Android中各种View的集合,里面包含自己日常开发和博客总结中的代码. 主要内容是Android动画.Android自定义View ...
- android动画延迟执行,Android 过渡动画框架
为了帮助视图层次内部和视图之间的过渡更加容易实现动画效果,Android 提供了 Transition 框架.这一套框架能够在视图之间提供一种或者多种动画过渡效果.过渡动画要解决的另一个主要问题就是对 ...
- Android属性动画 ObjectAnimator
转载请标明出处:http://blog.csdn.net/zhaoyanjun6/article/details/118709616 本文出自[赵彦军的博客] 文章目录 ObjectAnimator ...
- android属性动画作用范围,Android开发之动画效果浅析(一)
程序运行效果图: Android动画主要包含补间动画(Tween)View Animation.帧动画(Frame)Drawable Animation.以及属性动画Property Animatio ...
- (转)Android属性动画完全解析(中),ValueAnimator和ObjectAnimator的高级用法
版权声明:本文出自郭霖的博客,转载必须注明出处. 目录(?)[-] ValueAnimator的高级用法 ObjectAnimator的高级用法 转载请注明出处:http://blog.csdn.ne ...
最新文章
- python里混淆矩阵 左下角为漏报,右上角为误报
- leetcode 557. 反转字符串中的单词 III(Java版)
- html post举例,html post请求之a标签的两种用法举例
- 关于Zookeeper的几个问题
- LNMP1.4环境中安装fileinfo插件
- HTTP协议 通信过程介绍
- websocket 连接本地端口_Spring Boot 结合 WebSocket 实现在线聊天
- Python如何上传文件?
- php网站鼠标美化,几款耐用的鼠标指针皮肤,简约清新
- 电力拖动计算机控制系统讲什么,电力拖动控制系统:运动控制系统
- [资源]世界国家中英文名称以及地区区号json格式
- 前端——“一看就会的”菜鸟教程网站首页制作!
- Python再夺冠,2020年度编程语言排行榜出炉
- 最长对称子串 作者 陈越单位 浙江大学
- 怎么解决idea中yaml无法识别或者飘红?
- 计算机科学与技术脑电波,科学“读心术”,当脑电波扫描图遇到人工智能
- 中国学位与研究生教育信息网
- CocoaPods添加和删除某个库
- 关于password导致input弹出浏览器记住密码弹框问题
- java打包exe实例(使用javapackager)
热门文章
- mysql mha配置idrac远程关机_iDRAC远程管理功能试用_戴尔 PowerEdge R810(Xeon E7520/16GB/3*146GB)_服务器评测与技术-中关村在线...
- java安装后启动程序在哪_java – 有没有办法在安装后使用一些“帮助应用程序”立即启动应用程序?...
- 钉钉打卡如何破译人脸识别_疫情常态下,如何选择合适的考勤管理系统和考勤打卡工具?...
- java数组的声明学号姓名线性结构_20172302 《Java软件结构与数据结构》实验一:线性结构实验报告...
- Total Physical Response TPR
- 【BZOJ3158】千钧一发,网络流之最大权闭合子图
- 【Tyvj1185】【codevs1296】【BZOJ1588】营业额统计,Splay练习
- 黑苹果16g内存够用吗_现阶段最便宜的完美黑苹果配置是什么?
- sdoi2015 位图+区间+矩形
- linux内核开启overlay,Linux-overlay启动挂载为只读或写文件异常