- 浏览: 677144 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (252)
- Html/Div+CSS (12)
- Js/Jquery (34)
- Flex (2)
- Ajax (3)
- Java (35)
- C# (15)
- Spring (16)
- Hibernate (13)
- Struts2 (12)
- Struts1 (7)
- DWR (1)
- iBatis/myBatis (9)
- Tag(JSTL、EL) (1)
- Android (44)
- SQL (7)
- SEO (7)
- Exception (3)
- Tool (10)
- Other (3)
- WebService (9)
- Apache (7)
- Ext (0)
- Utils (12)
- thinking in programme (2)
- Hadoop (0)
- ActiveMQ (0)
- HTML5/CSS3 (0)
- WPF (1)
- NodeJs (1)
- 设计模式 (0)
- 程序人生 (1)
- 随笔 (1)
- Linux (1)
- Load Balance (0)
最新评论
-
drinkjava2:
太复杂了而且不通用,利用ThreadLocal可完美解决这一问 ...
JDBC的多条件动态查询 -
u013107014:
multipartRequest.getFiles(" ...
多文件上传 by MultipartFile and Multiple -
liyys:
可惜没讲你mysql数据库的表的设计
iBatis入门 -
Mapple_leave:
效果还是挺不错的,谢谢了。
中文简体与繁体的转换 -
arcpad:
JS禁用浏览器退格键
在 Android 中大部分的组件都是 View 的子类,而如果要想进行图形的绘制操作,则可以直接使用一个类继承 View 类,之后覆写 View 类中的指定方法。
· protected void onDraw(Canvas canvas) ;
在之前编写图形界面的时候,都是使用一个个的图形组件,那么这些组件都是一个 View 的子类,可是很多时候需要用户自己构图,例如,在做游戏的时候,这些图形基本上都是没有的。
下面给一个范例:
MyView.java
package com.iflytek.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; /** * @author xdwang * * @create 2012-11-11 下午9:19:17 * * @email:xdwangiflytek@gmail.com * * @description 自定义组件 * */ 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(); // ------------1、圆形----------------- paint.setColor(Color.BLUE); // 设置图形的底色 canvas.drawCircle(30, 50, 25, paint);// 从30,50为原点,25为半径画原型 // ------------2、矩形----------------- paint.setColor(Color.BLACK); canvas.drawRect(80, 20, 160, 80, paint); // ------------3、RECT绘制空心矩形----------------- Rect rect = new Rect(); // 定义矩形 rect.set(180, 20, 300, 80); paint.setStyle(Style.STROKE);// 设置空心的 canvas.drawRect(rect, paint); // ------------4、绘制文字----------------- paint.setColor(Color.RED); paint.setTextSize(20); canvas.drawText("xdwangiflytek", 40, 110, paint); // ------------5、绘制直线----------------- paint.setColor(Color.BLACK); canvas.drawLine(10, 120, 300, 120, paint); // ------------6、绘制空心椭圆----------------- RectF oval = new RectF(); oval.set(10.0f, 140.0f, 110.0f, 200.0f); canvas.drawOval(oval, paint); // ------------7、绘制空心扇形----------------- oval = new RectF(); oval.set(150.0f, 140.0f, 210.0f, 200.0f); canvas.drawArc(oval, 150.0f, 140.0f, true, paint); } }
main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <com.iflytek.demo.MyView android:layout_width="fill_parent" android:layout_height="fill_parent" /> </LinearLayout>
效果图
Android.graphics.Bitmap (位图)是 Android 手机中专门提供的用于操作图片资源的操作类,使用此类可以直接从资源文件之中进行图片资源的读取,并且对这些图片进行一些简单的修改。
Bitmap 类的常用方法:
No. |
方法 |
描述 |
1 |
Public static Bitmap createBitmap(Bitmap src) |
复制一个 Bitmap |
2 |
Public static Bitmap createBitmap(Bitmap source,int x,int y,int width,int height,Matrix m,Boolean filter) |
对一个 Bitmap 进行剪切 |
3 |
Public final int getHeight() |
取得图像的高 |
4 |
Public final int getWidth() |
取得图像的宽 |
5 |
Public static Bitmap createScaledBitmap(Bitmap src,int dstWidth,int dstHeight,boolean filter) |
创建一个指定大小的 Bitmap |
如果要想通过资源文件取得一个 Bitmap 实例,则需要 android.graphics.BitmapFactory 类支持。其方法有:
No. |
方法 |
描述 |
1 |
Public static Bitmap decodeByteArray(byte[] data,int offset,int length) |
根据指定的数据文件创建 Bitmap |
2 |
Public static Bitmap decodeFile(String pathName) |
根据 指定的路径创建 Bitmap |
3 |
Public static Bitmap decodeResource(resources res,int id) |
根据指定的资源创建 Bitmap |
4 |
Public static Bitmap decodeStream(InputStream is) |
根据指定的 InputStream 创建 Bitmap |
package com.iflytek.demo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.Rect; import android.util.AttributeSet; import android.view.View; /** * @author xdwang * * @create 2012-11-11 下午10:09:44 * * @email:xdwangiflytek@gmail.com * * @description 自定义组件 * */ public class MyView extends View { public MyView(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onDraw(Canvas canvas) { // ------------------1、基本绘图--------------------- // Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(), // R.drawable.ic_launcher); // 找到图片的Bitmap对象 // Paint paint = new Paint(); // paint.setAntiAlias(true); // 消除锯齿 // canvas.drawBitmap(bitmap, 0, 0, paint); // paint.setColor(Color.WHITE); // 底色 // paint.setTextSize(20); // canvas.drawText( // "图片高度:" + bitmap.getHeight() + ",图片宽度:" + bitmap.getWidth(), // 10, bitmap.getHeight() + 20, paint); // ------------------2、填充桌面--------------------- // DisplayMetrics dm = super.getResources().getDisplayMetrics(); // int screenWidth = dm.widthPixels; // int screenHeight = dm.heightPixels; // Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(), // R.drawable.ic_launcher); // 找到图片的Bitmap对象 // bitmap = Bitmap.createScaledBitmap(bitmap, screenWidth, screenHeight, // true); // Paint paint = new Paint(); // paint.setAntiAlias(true); // 消除锯齿 // canvas.drawBitmap(bitmap, 0, 0, paint); // ------------------3、指定位置区域显示--------------------- // Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(), // R.drawable.ic_launcher); // 找到图片的Bitmap对象 // Paint paint = new Paint() ; // paint.setAntiAlias(true); // 消除锯齿 // canvas.drawBitmap(bitmap, null, new Rect(30, 50, 200, 200), paint); // ------------------4、图片剪贴--------------------- Bitmap bitmap = BitmapFactory.decodeResource(super.getResources(), R.drawable.ic_launcher); // 找到图片的Bitmap对象 Paint paint = new Paint() ; paint.setAntiAlias(true); // 消除锯齿 canvas.drawBitmap(bitmap, new Rect(10,10,20,20), new Rect(10, 10, 20, 20), paint); } }
Bitmap 最大的特点是可以操作我的二进制数据
三、 Matrix
使用 Bitmap 可以进行图形的绘制,但是如果希望图形可以进行一些平移、旋转、缩放、倾斜等变换的话,则需要使用 android.graphics.Matrix 类(矩阵)的支持。
package com.iflytek.demo; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.graphics.Canvas; import android.graphics.Matrix; import android.util.AttributeSet; import android.view.View; /** * @author xdwang * * @create 2012-11-11 下午10:22:24 * * @email:xdwangiflytek@gmail.com * * @description 自定义组件 * */ public class MyView extends View { private Bitmap bitmap = null; private Matrix matrix = new Matrix(); public MyView(Context context, AttributeSet attrs) { super(context, attrs); this.bitmap = BitmapFactory.decodeResource(super.getResources(), R.drawable.ic_launcher); // float cosValue = (float) Math.cos(-Math.PI / 3); // float sinValue = (float) Math.sin(-Math.PI / 3); // this.matrix.setValues(new float[] { cosValue, -sinValue, 100, sinValue, // cosValue, 200, 0, 0, 2 }); this.matrix.preScale(0.5f, 0.5f, 50, 100); this.matrix.preRotate(-60, 50, 100); this.matrix.preTranslate(50, 100) ; } @Override protected void onDraw(Canvas canvas) { canvas.drawBitmap(this.bitmap, this.matrix, null); } }
发表评论
-
This version of ADT requires android SDK
2013-07-25 16:45 1604Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2523WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1901这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3313对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2198与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1898在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2896一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1422在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 2002一、渐变动画, Tweened Animation ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 2026传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3517一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2044一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1522一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2276Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1747Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1560在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2340导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1293Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 2028在一个项目之中,会由多个 Activity ... -
Android判断是否有网络连接
2013-04-25 16:34 1447Android中判断有时候因为功能的需求,需要判断是否有网络 ...
相关推荐
这些例子将涵盖从基础的图像显示到复杂的视频处理,以及从简单的动画效果到高级的照相功能,是学习Android多媒体开发的宝贵资源。通过不断实践和学习,开发者能够创建出具有吸引力且功能丰富的Android应用程序。
- Canvas类提供了在Bitmap上绘制图形的能力,包括线条、形状、文本和位图等。 - Paint类用于定义绘制的样式,如颜色、线宽、阴影效果等。 - Path类用于创建复杂的几何路径,可以在Canvas上进行绘制。 4. **滤镜...
总结,Android多媒体应用开发涉及到图像处理、音频和视频操作,以及2D和3D图形渲染等多个层面。开发者需要深入理解各个API的用法,结合实际场景灵活运用,才能打造出功能丰富、用户体验优秀的多媒体应用。通过不断的...
**Resources** 类是Android中用于访问应用程序资源的核心类之一,它能够帮助开发者管理各种类型的资源文件,如二进制文件、颜色定义、图形文件、多媒体文件等,并提供了一些重要的设备配置信息,比如屏幕方向、输入...
总结起来,Android多媒体应用开发涵盖图像加载与处理、音频播放与录制、视频播放以及2D图形绘制等多个方面。开发者需要掌握Android提供的各种API,结合第三方库,灵活应对不同的应用场景。通过分析提供的源代码,...
本文介绍了Android自绘控件的核心概念和关键技术点,包括View、Drawable、Bitmap、Canvas和Paint等。通过理解这些基础知识,开发者可以更好地掌握自绘控件的开发技巧,从而创造出更加丰富多样的用户界面。未来还将...
总结来说,“Android拼图游戏源码”项目涵盖了Android游戏开发的多个关键领域,包括但不限于UI设计、图形绘制、触摸事件处理、算法设计、数据存储以及多媒体集成。通过学习这个源码,开发者不仅可以掌握Android游戏...
7.2 绘制几何图形 7.3 手机屏保 7.4 照片拖动效果 7.5 存储卡中的图片 7.6 获取内置媒体文件 7.7 调节音量 7.8 播放mp3资源文件 7.9 录制音频 7.10 实现相机拍照功能 7.10.1 实现原理 7.10.2 编程思想 7.10.3 具体...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
总的来说,实现“android翻页效果”不仅需要掌握Android的基础知识,还需要深入理解图形绘制、动画原理以及用户交互。在“pageturntest”项目中,我们可以看到作者如何将这些知识点应用到实践中,通过代码和调试来...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
第1章 Android应用与开发环境 1 1.1 Android的发展和历史 2 1.1.1 Android的发展和简介 2 1.1.2 Android平台架构及特性 3 1.2 搭建Android开发环境 5 1.2.1 下载和安装Android SDK 5 1.2.2 安装...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
第11章、多媒体应用开发 11.1、音频和视频的播放:MediaPlayer; SoundPool; VideoView; 11.2、使用MediaRecorder录制音频: 11.3、控制摄像头拍照:Camera; 第12章、OpenGL与3D应用开发 12.2、OpenGL ES基础: ...
第11章、多媒体应用开发 11.1、音频和视频的播放:MediaPlayer; SoundPool; VideoView; 11.2、使用MediaRecorder录制音频: 11.3、控制摄像头拍照:Camera; 第12章、OpenGL与3D应用开发 12.2、OpenGL ES基础: ...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
在Android中,Bitmap类是用于处理图像的基础,可以加载、绘制、裁剪和旋转图片。此外,还有 Glide、Picasso 等库用于更高效地加载和显示图片。Android还引入了ImageReader,用于接收来自Surface的连续图像帧,常...