图形与动画在Android中的实现

?





1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

public class MyView extends
View{

    Bitmap myBitmap;

    Paint paint;

    public
MyView(Context context, AttributeSet attrs) {

        super(context, attrs);

        this.initBitmap();

    }

    public
void initBitmap(){

        paint = new
Paint();

        myBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img);

        

    }

    @Override

    protected
void onDraw(Canvas canvas) {

        super.onDraw(canvas);

        paint.setAntiAlias(true);

        paint.setColor(Color.WHITE);

        paint.setTextSize(15);

        canvas.drawBitmap(myBitmap, 1010, paint);

        

        //Saves the current matrix and clip onto a private stack.

        //Subsequent calls to translate,scale,rotate,skew,concat or clipRect,clipPath

        //will all operate as usual, but when the balancing call to restore() is made,

        //those calls will be forgotten, and the settings that existed before the save() will be reinstated(恢复).

        //Returns:

        //The value to pass to restoreToCount() to balance this save()

        int
i = canvas.save(); 

        System.out.println("current count -- > "
+ i);

        

        Matrix m1 = new
Matrix();

        m1.setTranslate(500, 10);

        Matrix m2 = new
Matrix();

        m2.setRotate(15);

        Matrix m3 = new
Matrix();

        m3.setConcat(m1, m2);

        m1.setScale(0.8f, 0.8f);

        m2.setConcat(m3, m1);

        canvas.drawBitmap(myBitmap, m2, paint);

        

        //This call balances a previous call to save(), and is used to

        //remove all modifications to the matrix/clip state since the last save call.

        //It is an error to call restore() more times than save() was called.

        canvas.restore();

        int
j = canvas.save();

        System.out.println("current count -- > "
+ j);

        paint.setAlpha(180);

        m1.setTranslate(200, 100);

        m2.setScale(1.3f, 1.3f);

        m2.setConcat(m1, m2);

        canvas.drawBitmap(myBitmap, m3, paint);

        

        //Restores the paint to its default settings.

        paint.reset();

        canvas.restore();

        paint.setTextSize(40);

        paint.setColor(Color.BLUE);

        canvas.drawText("图片的宽度:"
+ myBitmap.getWidth(), 150, 220, paint);

        canvas.drawText("图片的高度:"
+ myBitmap.getHeight(), 150, 300, paint);

        paint.reset();

        

    }

}

效果图:

 

图形与动画在Android中的实现,布布扣,bubuko.com

时间: 2024-10-01 05:03:06

图形与动画在Android中的实现的相关文章

Android中的补间动画(tween)的简单使用

相对帧动画,补间动画(tween)可以这么理解:我们不必像帧动画一样指定动画的每一帧,只需定义一个动画的开始和结束关键帧,而中间变化的帧由系统帮我们计算. tween动画可以分为下面几种: AlphaAnimation(透明渐变动画): 示例:res/anim/alpha.xml <?xml version="1.0" encoding="utf-8"?> <alpha xmlns:android="http://schemas.andr

Android中的动画具体解释系列【2】——飞舞的蝴蝶

这一篇来使用逐帧动画和补间动画来实现一个小样例,首先我们来看看Android中的补间动画. Android中使用Animation代表抽象的动画类,该类包含以下几个子类: AlphaAnimation:透明改变动画. ScaleAnimation:大小缩放动画. TranslateAnimation:位移变化动画. RotateAnimation:旋转动画. 我们以下使用位移动画和逐帧动画来实现这个小样例.先看看执行效果: 蝴蝶挥动翅膀的逐帧动画文件: <?xml version="1.0

在Android中显示GIF动画

gif图动画在android中还是比较常用的,比如像新浪微博中,有很多gif图片,而且展示非常好,所以我也想弄一个.经过我多方的搜索资料和整理,终于弄出来了,其实github上有很多开源的gif的展示代码,我下载过几个,但是都不是很理想,不是我完全想要的.所以有时候就得自己学会总结,把开源的东西整理成自己的,现在无聊,也正好有朋友需要,所以现在整理了一下,留着以后备用! 废话不多说,直接上图: 在这里主要用的是:android中的android.graphics.Movie 这个类,这是andr

Android中Animation详解

Animation从总体来说可以分为两类: Tweened Animations:该类提供了旋转,移动,伸展,淡入淡出等效果 Frame-By-Frame Animations:该类可以创建一个Drawable序列,这些Drawable可以按照指定的事件间隔一个一个显示,和动画片差不多 一.Tweened Animations Tweened Animations也有四种类型: Alpha:淡入淡出效果Scale:缩放效果Rotate:旋转效果Translate:移动效果 设置动画效果可以在XM

初识android中的动画

动画效果可以大大提高界面的交互效果,因此,动画在移动开发中的应用场景较为普遍.掌握基本的动画效果在成熟的软件开发中不可或缺.除此之外,用户对于动画的接受程度远高于文字和图片,利用动画效果可以加深用户对于产品的印象.因此本文给出安卓设计中几种常见的动画效果. 基础知识 在介绍安卓中的动画效果之前,有必要介绍一下安卓中的图片处理机制.图片的特效包括图形的缩放.镜面.倒影.旋转.平移等.图片的特效处理方式是将原图的图形矩阵乘以一个特效矩阵,形成一个新的图形矩阵来实现的.矩阵Matrix 类,维护了一个

Android中使用SurfaceView和Canvas来绘制动画

其实每个View中都有Canvas可以用来绘制动画,只需要在这个View中重载onDraw()方法就可以,但是SurfaceView类是一个专门用来制动动画的类. Canvas(中文叫做"画布")就和HTML5中的canvas标签一样可以在一定区域内自由绘制图形.Canvas+SurfaceView制作的动画与View Animation和Property Animation这类动画比起来更加适合大量的集中播放的动画,比如游戏画面.相机的图像显示等. 因为SurfaceView通常会在

【Android】第21章 2D图形和动画

分类:C#.Android.VS2015: 创建日期:2016-03-19 一.简介 Android系统定义了一系列独立的图形处理类,其中,2D图形处理类分别位于以下命名空间: Android.Graphices Android.Graphics.Drawable.Shapes Android.View.Animation 3D图形的处理类位于Android.Opengl命名空间下. 总体来说,Android的Graphics技术大致可以分为两大类:图形和动画. 图形又被进一步分为2D图形和3D

Android中android.graphics下面的绘制图形类Canvas,Paint,Bitmap,Drawable

1.概念区别: 很多网友刚刚开始学习Android平台,对于Drawable.Bitmap.Canvas和Paint它们之间的概念不是很清楚, 其实它们除了Drawable外早在Sun的J2ME中就已经出现了,但是在Android平台中,Bitmap.Canvas相关的都有所变化. 首先让我们理解下Android平台中的显示类是View,但是还提供了底层图形类android.graphics,今天所说的这些均为graphics底层图形接口. Bitmap - 称作位图,一般位图的文件格式后缀为b

android中给Dialog设置的动画如何自定义修改参数

============问题描述============ 在android中给Dialog设置动画的方法我只找到Dialog.getWindow().setWindowAnimation(int resID); 这样不是只能在styles里用xml定义动画吗? 但是我现在想要先用程序计算出一个屏幕上的点,在让Dialog从该点开始执行scaleAnimation. 我如何给我Dialog的动画设置起始点之类的参数呢? ============解决方案1============ 自定义一个dial