- 浏览: 663217 次
- 性别:
- 来自: 安徽
文章分类
- 全部博客 (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 1541Windows系统下用Eclipse开发工具开发An ... -
Android学习13-----网络通信(4) WebView组件
2012-11-27 09:18 2453WebView 是一个开发的浏览 ... -
Android学习13-----网络通信(3) 与Web Service进行通讯
2012-11-26 09:40 1858这里我们的WebService使用xFire开发。 ... -
Android学习13-----网络通信(2) 与Socket交换数据
2012-11-23 09:11 3267对于网络开发而言,最常用的交互模式:WebService、We ... -
Android学习13-----网络通信(1) 与WEB服务器交换数据
2012-11-22 09:11 2158与Web服务器交互: 如果手机要想与 web ... -
Android学习11-----多媒体技术(5) 媒体录制
2012-11-16 08:10 1846在Android中通过android.media ... -
Android学习11-----多媒体技术(4) 使用摄像头拍照,多点触控
2012-11-15 08:37 2834一、摄像头拍照 前面说媒体播放 时了解了 ... -
Android学习11-----多媒体技术(3) 媒体播放
2012-11-14 08:25 1380在 Androi ... -
Android学习11-----多媒体技术(2) Animation
2012-11-13 08:47 1956一、渐变动画, Tweened Animation ... -
Android学习12-----手机服务(4) 传感器
2012-11-19 09:13 1986传感器一般用于游戏中,在 Android 系统中为 ... -
Android学习12-----手机服务(1) 取得电池电量和声音服务:AudioManager
2012-11-18 11:18 3431一、取得电池电量信息 ... -
Android学习10-----Android组件通信 (8) 桌面显示组件:AppWidget
2012-11-02 08:36 2002一、 AppWidget 在使用 Androi ... -
Android学习10-----Android组件通信 (7) 广播机制:Broadcast
2012-11-01 08:43 1480一、 广播: 广播也是一种信息的发送机制,在 ... -
Android学习10-----Android组件通信 (6) PendingIntent
2012-10-31 08:20 2206Intent 的主要功能是表示用 ... -
Android学习10-----Android组件通信 (5) Service
2012-10-30 08:25 1680Service 基本组成: ... -
Android学习10-----Android组件通信 (4) 消息机制
2012-10-29 08:22 1514在 Android 操作系统中存在着消息队列的操作 ... -
Android学习10-----Android组件通信 (3) ActivityGroup
2012-10-26 08:23 2265导航栏在 Android 中的应用是很常见的,前面 ... -
Android学习10-----Android组件通信 (2) Activity生命周期
2012-10-25 08:16 1248Activity 是整个 Android 平台的基 ... -
Android学习10-----Android组件通信 (1) Intent
2012-10-24 08:43 1930在一个项目之中,会由多个 Activity ... -
Android判断是否有网络连接
2013-04-25 16:34 1402Android中判断有时候因为功能的需求,需要判断是否有网络 ...
相关推荐
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 取得...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
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 安装...
第11章、多媒体应用开发 11.1、音频和视频的播放:MediaPlayer; SoundPool; VideoView; 11.2、使用MediaRecorder录制音频: 11.3、控制摄像头拍照:Camera; 第12章、OpenGL与3D应用开发 12.2、OpenGL ES基础: ...
第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 安装Eclipse和ADT插件 7 ...
第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 取得...
第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 安装Eclipse和ADT插件 7 ...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 ...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序——FadeIn/FadeOut特效与运行线程 7.4 用手指移动画面里的照片——onTouchEvent事件判断 7.5 加载存储卡的Gallery相簿——FileArrayList 7.6 取得...
filter协同作业 6.17 双向短信常驻服务——Service与receiver实例 第7章 娱乐多媒体 7.1 访问Drawable资源的宽高——ContextMenu与Bitmap的应用 7.2 绘制几何图形——使用android.graphics类 7.3 手机屏幕保护程序...