Android详细教程(基础篇):二十九、Android 多媒体技术之Paint 、Bitmap、 Matrix、 Animation详解

本文详细介绍了Android多媒体技术,包括Paint的使用,Bitmap的基础与操作,Matrix在图形变换中的作用,以及Animation的分类、定义与使用,如Tween Animation和Frame Animation。同时讲解了Animation的Interpolator、Transformation类以及AnimationSet、LayoutAnimationsController的运用,展示了如何在ListView中结合使用Animation。
摘要由CSDN通过智能技术生成

多媒体技术

  1. Paint(绘图)

public class

Paint

extends Object

java.lang.Object

   

android.graphics.Paint

 

Known Direct Subclasses

TextPaint

 

 

使用Paint绘制图形

View:

package com.makyan.demo;

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.graphics.Paint.Style;

import android.graphics.Rect;

import android.graphics.RectF;

import android.util.AttributeSet;

import android.view.View;

public class MyView extends View {

            public MyView(Context context, AttributeSet attrs) {

                       super(context, attrs);

            }

            @Override

            protected void onDraw(Canvas canvas) {                                               // 覆写绘图方法

                       canvas.drawColor(Color.WHITE) ;                                                            // 设置背景颜色

                       Paint paint = new Paint() ;                                                                        // 定义Paint对象

                       paint.setColor(Color.BLUE) ;                                                                    // 设置为蓝色显示

                       canvas.drawCircle(30, 50, 25, paint) ;                                          // 画圆

                       paint.setColor(Color.BLACK) ;                                                                  // 设置为黑色显示

                       canvas.drawRect(80, 20, 160, 80, paint) ;                        // 画矩形

                       Rect rect = new Rect() ;                                                                            // 定义矩形

                       rect.set(180, 20, 300, 80);                                                                        // 设置矩形大小

                       paint.setStyle(Style.STROKE);                                                                   // 空心显示

                       canvas.drawRect(rect, paint) ;                                                                 // 画矩形

                       paint.setColor(Color.RED) ;                                                                      // 设置为红色

                       paint.setTextSize(20) ;                                                                                          // 设置字体大小

                       canvas.drawText("杨雄android工作室", 10, 110, paint);       // 显示文字

                       paint.setColor(Color.BLACK) ;                                                                  // 设置为黑色显示

                       canvas.drawLine(10, 120, 300, 120, paint);                                // 画线

                       RectF oval = new RectF() ;                                                                        // 定义参考矩形

                       oval.set(10.0f, 140.0f, 110.0f, 200.0f);                             // 定义大小

                       canvas.drawOval(oval, paint) ;                                                                 // 画椭圆

                       oval = new RectF() ;                                                                                  // 定义参考矩形

                       oval.set(150.0f, 140.0f, 210.0f, 200.0f);                          // 定义大小

                       canvas.drawArc(oval, 150.0f, 140.0f, true, paint) ;// 画弧

            }

}

 

组件配置(配置自己的视图):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".PaintActivity" >

    <com.makyan.demo.MyView

        android:id="@+id/myView"

        android:layout_width="wrap_content"

        android:layout_height="wrap_content"/>

</LinearLayout>

 

  1. Bitmap(位图)
    1. Bitmap简介

public final class

Bitmap

extends Object

implements Parcelable

java.lang.Object

   

android.graphics.Bitmap

 

 

Bitmap是Android手机中专门提供的用于操作图片资源的操作类,使用此类可以直接从资源文件之中进行图片

资源的读取,并且对这些图片进行一些简单的修改。

 

范例:使用Bitmap进行绘图

View:

package com.makyan.demo;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.view.View;

public class MyView extends View {

            public MyView(Context context, AttributeSet attrs) {

                       super(context, attrs);

            }

            @Override

            protected void onDraw(Canvas canvas) {                                   // 绘图

                       Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(),

                                               R.drawable.tt);

                       Paint paint = new Paint();

                       paint.setAntiAlias(true);                                                               // 消除锯齿

                       canvas.drawBitmap(bitmap, 0, 0, paint);            // 画图

                       paint.setColor(Color.BLUE);                                                         // 蓝色字体

                       paint.setTextSize(20);                                                                               // 定义字号

                       canvas.drawText(

                                               "图片高度:" + bitmap.getHeight() + ",图片宽度:" + bitmap.getWidth(),

                                               10, bitmap.getHeight() + 20, paint);         // 输出文字

            }

}

 

组件配置:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:paddingBottom="@dimen/activity_vertical_margin"

    android:paddingLeft="@dimen/activity_horizontal_margin"

    android:paddingRight="@dimen/activity_horizontal_margin"

    android:paddingTop="@dimen/activity_vertical_margin"

    tools:context=".BitmapActivity" >

    <com.makyan.demo.MyView

        android:id="@+id/myview"

                       android:layout_width="fill_parent"

                       android:layout_height="fill_parent" />

</LinearLayout>

范例:使用DisplayMetrics将图片的宽和高设置为屏幕的宽和高

修改View:

package com.makyan.demo;

import android.content.Context;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.graphics.Canvas;

import android.graphics.Paint;

import android.util.AttributeSet;

import android.util.DisplayMetrics;

import android.view.View;

public class MyView extends View {

            public MyView(Context context, AttributeSet attrs) {

                       super(context, attrs);

            }

            @Override

            protected void onDraw(Canvas canvas) {                                   // 绘图

                       DisplayMetrics dm = getResources().getDisplayMetrics();

                       int screenWidth = dm.widthPixels ;                                             // 取得手机屏幕的宽度

                       int screenHeight = dm.heightPixels ;                               // 取得手机屏幕的高度

                       Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(),

                                               R.drawable.tt);                                            // 取得Bitmap

                       bitmap = Bitmap.createScaledBitmap(bitmap, screenWidth, screenHeight,

                                               true);                                                                                              // 创建一个指定大小的图片

                       Paint paint = new Paint();

                       paint.setAntiAlias(true);                                                               // 消除锯齿

                       canvas.drawBitmap(bitmap, 0, 0, paint);            // 画图

            }

}

 

范例:将图片在指定位置显示:

修改View:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值