【自定义简单的逐帧动画控件】
来源:互联网 发布:淘宝怎么申诉啊 编辑:程序博客网 时间:2024/04/30 03:00
今天我们来说一下关于自定义简单的逐帧动画控件的方法:
package com.example.scr;
import java.util.ArrayList;
import java.util.Timer;
import java.util.TimerTask;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.view.View;
public class ArrowAnimationView extends View{
Context mContext;
private int scr_w = 0, scr_h = 0;
private ArrayList<Bitmap> ani = new ArrayList<Bitmap>(5);
private int g_anim_index = 0;
private boolean isStart = true;
private boolean isShow = true;
private Timer timer = new Timer();
public ArrowAnimationView(Context context) {
super(context);
mContext = context;
int[] imgIds = {R.drawable.ani01, R.drawable.ani02, R.drawable.ani03,
R.drawable.ani04, R.drawable.ani05 };
for (int i = 0; i < imgIds.length; i++) {
Bitmap bm = BitmapFactory.decodeResource(mContext.getResources(),
imgIds[i]);
ani.add(bm);
}
timer.scheduleAtFixedRate(new MyTask(), 100, 1000);
}
public ArrowAnimationView(Context context, int w, int h) {
super(context);
scr_w = w;
scr_h = h;
mContext = context;
int[] imgIds = {R.drawable.ani01, R.drawable.ani02, R.drawable.ani03,
R.drawable.ani04, R.drawable.ani05 };
for (int i = 0; i < imgIds.length; i++) {
Bitmap bm = BitmapFactory.decodeResource(mContext.getResources(),
imgIds[i]);
ani.add(bm);
}
timer.scheduleAtFixedRate(new MyTask(), 1, 200);
}
@Override
public void layout(int l, int t, int r, int b) {
// TODO Auto-generated method stub
super.layout(l, t, r, b);
}
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
// TODO Auto-generated method stub
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
}
public void drawArrowAnim(Canvas canvas)
{
int img_w = ani.get(0)。getWidth();
int img_h = ani.get(0)。getHeight();
int left = (scr_w / 2) - (img_w / 2);
int top = scr_h - img_h - 120;
canvas.drawBitmap(ani.get(g_anim_index), left, top, null);
}
private class MyTask extends TimerTask {
@Override
public void run() {
if (isStart) {
g_anim_index++;
if (g_anim_index > ani.size()-1) {
g_anim_index = 0;
}
}
}
}
void startAnim()
{
isStart = true;
}
void stopAnim()
{
isStart = false;
}
void hideAnim()
{
isShow = true;
}
void showAnim()
{
isShow = false;
}
@Override
protected void onDraw(Canvas canvas) {
// TODO Auto-generated method stub
super.onDraw(canvas);
if (isShow)
{
drawArrowAnim(canvas);
}
invalidate();
}
public void onViewDestroy() {
// TODO Auto-generated method stub
if (timer != null) {
timer.cancel();
}
}
}
更多精彩教程请关注:win2003系统下载
- 自定义简单的逐帧动画控件
- 【自定义简单的逐帧动画控件】
- Android自定义控件:动画类---逐帧动画AnimationDrawable
- 简单的自定义控件
- 简单的自定义控件
- 自定义简单的控件
- 简单的自定义控件
- 简单的自定义控件
- 自定义控件之帧动画
- 自定义控件-自定义动画的下来刷新
- 自定义简单的转场动画
- android简单的自定义动画
- 简单的自定义控件四简单的自定义控件四
- 一种带动画自定义控件的封装
- 自定义控件--带动画的CheckBox
- 自定义控件--带动画的CheckBox
- 自定义带动画的日期时间控件
- android自定义带动画的柱状图控件
- solarock::DBT research
- [安卓破解]无广告版本的<魔剑镇魂曲>
- 编程日志:webQQ发信
- 一道单向链表的题目..
- 浅谈spring——DAO管理(十)
- 【自定义简单的逐帧动画控件】
- 给文字添加模糊效果
- XMPP服务端——ejabberd for mac安装教程
- 使用Bundle对象在Activity之间传送数据
- 网络链接记录地址
- 什么原因导致鼠标反应慢
- 【rzxt】快速设置Word渐变色彩
- 微软技术实践营—Windows XP迁移之路
- 计算几何-多边形的重心