android animation应用——图片绕固定点旋转

一、功能:实现将图片绕固定点旋转,圈数随机,onTouch后旋转。

二、程序框架:

组成 功能
主Activity:MyActivity 1.实现animation

2.实现onTouch

View       :MyView 1.将突破绘制到MyView上

三、程序源代码:

MyVIew.java

package com.androids.kavinapps.myapplication;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.drawable.BitmapDrawable;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;

/**
 * Created by Administrator on 14-11-29.
 */
public class MyView extends View{
    //define roate animatioin
    public Animation mAnimationRoate;
    //define bitmap object
    Bitmap mBitmap = null;
    public MyView(Context context) {
        super(context);
        //load resource
        mBitmap = ((BitmapDrawable)getResources().getDrawable(com.androids.kavinapps.myapplication.R.drawable.choujiang1)).getBitmap();
    }

    @Override
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint mPaint = null;
        //draw pic
        canvas.drawBitmap(mBitmap,0,40,null);
    }

}

MyActivity.java

package com.androids.kavinapps.myapplication;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Message;
import android.os.Handler;//Handler
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.animation.Animation;
import android.view.animation.RotateAnimation;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.TextView;

public class MyActivity extends Activity {

    AnimationDrawable mAnimation1 = null;
    int mRandom = 1;//随机数
    MyView myView;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        myView = new MyView(this);
        setContentView(myView);

        mRandom = (int) (Math.random()*100);
        if(mRandom%5==0){
            mRandom = 5;
        }else {
            mRandom = mRandom%5;
        }

        myView.mAnimationRoate = new RotateAnimation(0.0f, +(1800.0f +72*mRandom), Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);
        //set the time of anim
        myView.mAnimationRoate.setDuration(3000);
        myView.mAnimationRoate.setFillAfter(true);//动画完成后不恢复原状
        myView.startAnimation(myView.mAnimationRoate);
    }//onCreate
    public boolean onTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                mRandom = (int) (Math.random()*100);
                if(mRandom%5==0){
                    mRandom = 5;
                }else {
                    mRandom = mRandom%5;
                }

                myView.mAnimationRoate = new RotateAnimation(0.0f, +(1800.0f +72*mRandom), Animation.RELATIVE_TO_PARENT, 0.5f, Animation.RELATIVE_TO_PARENT, 0.5f);
                myView.mAnimationRoate.setDuration(3000);
                myView.mAnimationRoate.setFillAfter(true);//动画完成后不恢复原状
                myView.startAnimation(myView.mAnimationRoate);
                return true;
        }
        return true;
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.my, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }
}

四、部分代码分析

1.如何产生随机数

mRandom = (int) (Math.random()*100);

2.如何使动画完成后,不恢复原装填

myView.mAnimationRoate.setFillAfter(true);//动画完成后不恢复原状

3.如何将drawable下的图片文件变为Bitmap

mBitmap = ((BitmapDrawable)getResources().getDrawable(com.androids.kavinapps.myapplication.R.drawable.choujiang1)).getBitmap();

2014年12月9日14:41:34

时间: 2024-09-30 04:01:54

android animation应用——图片绕固定点旋转的相关文章

Android提高篇之自定义dialog实现processDialog“正在加载”效果、使用Animation实现图片旋转

知识点: 1.使用imageview.textview自定义dialog 2.使用Animation实现图片旋转动画效果 3.通过自定义theme去掉dialog的title 没有使用progressdialog,使用起来更加灵活,请大家参考. 效果如下图: 下载地址:http://download.csdn.net/detail/tigoss/3751705

Android实现对图片的缩放、剪切、旋转、存储

Android实现对图片的缩放.剪切.旋转.存储 一.问题描述 在开发中,当我们需要的有一张大图片同时还需要一些小图片时,我们只需要通过代码对此图片进行不同比例的缩放即可,这样大大节约资源,减小了安装包的尺寸 .除缩放外,我们还经常对图片进行其他操作如裁剪.旋转.存储等. 这样我们可以编写对于图片进行处理的通用组件,方便开发.下面就分享一下对图片进行处理的组件BitmapUtil,案例界面: 二.技术点描述 1.通过BitmapFactory取得Bitmap Bitmap bm=BitmapFa

Android-两个小球不停的绕中心旋转的进度条

转载请标明出处: http://blog.csdn.net/hanhailong726188/article/details/47363911 本文出自:海龙的博客 一.概述 最近做了一个比较清新的进度条,没啥难度的,就是涉及到属性动画和canvas绘制圆形的知识,因为群里有一个问怎么实现的,这里就稍微写了一下原理,先看效果图 二.效果图 Gif录制的帧数有点低,导致稍微有点卡,但是在真实运行的时候一点都不卡 三.实现原理 自定义view 自定义属性动画 canvas画圆 四.代码实现 因为代码

Android Animation学习笔记

关于动画的实现,Android提供了Animation,在Android SDK介绍了2种Animation模式: 1. Tween Animation:通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果,即是一种渐变动画: 2. Frame Animation:顺序播放事先做好的图像,是一种画面转换动画. 动画类型 下面先来看看Android提供的动画类型.Android的animation由四种类型组成 在XML文件中: alpha        渐变透明度动画效果 scale

[转]Android Animation

3.0以前,android支持两种动画模式,tween animation,frame animation,在android3.0中又引入了一个新的动画系统:property animation,这三种动画模式在SDK中被称为property animation,view animation,drawable animation. 1. View Animation(Tween Animation) View Animation(Tween Animation):补间动画,给出两个关键帧,通过一

Android——Animation

Android中的动画: 一.分类:TweenAnimation(补间动画)和FrameAnimation(帧动画). TweenAnimation,通过对图像不断做变换产生动画效果,是一种渐变效果: AlphaAnimation:透明度渐变: ScaleAnimation:尺寸缩放: TranslateAnimation:移动 RotateAnimation:旋转 FrameAnimation:顺序播放事先做好的图像是一种转换动画: 二.属性简介: TweenAnimation共同属性: an

Android Animation (动画设计)

Android Animation(动画设计) 本文主要介绍逐帧动画,补间动画,属性动画 使用简单的图片 1.Bitmap和BitmapFactory 把一个Bitmap包装成BitmapDrawable对象,调用BitmapDrawable的构造器 BitmapDrawable drawable = new BitmapDrawable(bitmap); 获取BitmapDrawable所包装的Bitmap, Bitmap bitmap = drawable.getBitmap(); 2.Bi

android - Animation详解

Drawable 最强大的功能是:显示Animation.AndroidSDK介绍了2种Animation: Tween Animation(渐变动画):通过对场景里的对象不断做图像变换(平移.缩放.旋转)产生动画效果 Frame Animation(帧动画)   :顺序播放事先做好的图像,类似放电影 在使用Animation前,我们先学习如何定义Animation,这对我们使用Animation会有很大的帮助.Animation是以XML格式定义的,定义好的XML文件存放在res/anim中.

Android ActionBar中的按钮添加旋转动画

将Menu菜单项显示在ActionBar上,这里显示一个刷新按钮,模拟在刷新动作时的添加刷新动画 菜单布局 menu.xml <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/action_stop" android:orderInCategory="100" android:showAsAction