- 浏览: 484159 次
- 性别:
- 来自: 北京
最新评论
-
fatalfeel:
Irrlicht 3d Engine is full open ...
转:Android世界的15款开源的游戏开发引擎 -
diyangxia:
BigDecimal怎么初始化全局变量呢
android如何保留小数点后x位数字 -
c1230v:
这是一个程序员应该用的方法吗?求靠谱一点
转:android WebView 控件加载本地sdcard中html文件图片的问题 -
dingbuoyi:
楼主是天才 真牛逼
转:Progressbar-设置自己的样式 -
panxiaoming2008:
记住:显示本地文件时 必须使用APK'>file:/// ...
Android使用WebView加载本地资源
位图是我们开发中最常用的资源,毕竟一个漂亮的界面对用户是最有吸引力的。 可以使用BitmapDrawable或者BitmapFactory来获取资源中的位图。 当然,首先需要获取资源: Resources res=getResources(); 使用BitmapDrawable获取位图 或者采用下面的方式: 使用BitmapFactory获取位图 (Creates Bitmap objects from various sources, including files, streams, and byte-arrays.) 使用BitmapFactory类decodeStream(InputStream is)解码位图资源,获取位图。 Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic180); BitmapFactory的所有函数都是static,这个辅助类可以通过资源ID、路径、文件、数据流等方式来获取位图。 以上方法在编程的时候可以自由选择,在Android SDK中说明可以支持的图片格式如下:png (preferred), jpg (acceptable), gif (discouraged),和bmp(Android SDK Support Media Format)。 要获取位图信息,比如位图大小、像素、density、透明度、颜色格式等,获取得到Bitmap就迎刃而解了,这些信息在Bitmap的手册中,这里只是辅助说明以下2点: 显示位图可以使用核心类Canvas,通过Canvas类的drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas。当然,也可以通过BitmapDrawable将位图显示到View中。 转换为BitmapDrawable对象显示位图 // 获取位图 使用Canvas类显示位图 这儿采用一个继承自View的子类Panel,在子类的OnDraw中显示 (1)将一个位图按照需求重画一遍,画后的位图就是我们需要的了,与位图的显示几乎一样:drawBitmap(Bitmap bitmap, Rect src, Rect dst, Paint paint)。 (2)在原有位图的基础上,缩放原位图,创建一个新的位图:CreateBitmap(Bitmap source, int x, int y, int width, int height, Matrix m, boolean filter) (3)借助Canvas的scale(float sx, float sy) (Preconcat the current matrix with the specified scale.),不过要注意此时整个画布都缩放了。 (4)借助Matrix: 同样,位图的旋转也可以借助Matrix或者Canvas来实现。 旋转效果: 生成水印的过程。其实分为三个环节:第一,载入原始图片;第二,载入水印图片;第三,保存新的图片。
onDraw方法会传入一个Canvas对象,它是你用来绘制控件视觉界面的画布。 在onDraw方法里,我们经常会看到调用save和restore方法,它们到底是干什么用的呢? ❑ save:用来保存Canvas的状态。save之后,可以调用Canvas的平移、放缩、旋转、错切、裁剪等操作。 ❑ restore:用来恢复Canvas之前保存的状态。防止save后对Canvas执行的操作对后续的绘制有影响。 save和restore要配对使用(restore可以比save少,但不能多),如果restore调用次数比save多,会引发Error。save和restore之间,往往夹杂的是对Canvas的特殊操作。 例如:我们先想在画布上绘制一个右向的三角箭头,当然,我们可以直接绘制,另外,我们也可以先把画布旋转90°,画一个向上的箭头,然后再旋转回来(这种旋转操作对于画圆周上的标记非常有用)。然后,我们想在右下角有个20像素的圆,那么,onDraw中的核心代码是: int px = getMeasuredWidth(); int py = getMeasuredWidth(); // Draw background canvas.drawRect(0, 0, px, py, backgroundPaint); canvas.save(); canvas.rotate(90, px/2, py/2); // Draw up arrow canvas.drawLine(px / 2, 0, 0, py / 2, linePaint); canvas.drawLine(px / 2, 0, px, py / 2, linePaint); canvas.drawLine(px / 2, 0, px / 2, py, linePaint); canvas.restore(); // Draw circle canvas.drawCircle(px - 10, py - 10, 10, linePaint); 效果如图1所示: 如果我们不调用save和restore会是什么样子呢?如图2所示: 从这两个图中,我们就能看到圆圈位置的明显差异。不进行Canvas的save和restore操作的话,所有的图像都是在画布旋转90°后的画布上绘制的。当执行完onDraw方法,系统自动将画布恢复回来。save和restore操作执行的时机不同,就能造成绘制的图形不同。 本文参考: Android SDK moandroid.com http://www.cnblogs.com/xirihanlin/archive/2009/07/24/1530246.html1. 从资源中获取位图
// 读取InputStream并得到位图
InputStream is=res.openRawResource(R.drawable.pic180);
BitmapDrawable bmpDraw=new BitmapDrawable(is);
Bitmap bmp=bmpDraw.getBitmap();
BitmapDrawable bmpDraw=(BitmapDrawable)res.getDrawable(R.drawable.pic180);
Bitmap bmp=bmpDraw.getBitmap();
2. 获取位图的信息
3. 显示位图
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic180);
// 转换为BitmapDrawable对象
BitmapDrawable bmpDraw=new BitmapDrawable(bmp);
// 显示位图
ImageView iv2 = (ImageView)findViewById(R.id.ImageView02);
iv2.setImageDrawable(bmpDraw);public class MainActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new Panel(this));
}
class Panel extends View{
public Panel(Context context) {
super(context);
}
public void onDraw(Canvas canvas){
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pic180);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(bmp, 10, 10, null);
}
}
}
4. 位图缩放
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pic180);
Matrix matrix=new Matrix();
matrix.postScale(0.2f, 0.2f);
Bitmap dstbmp=Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),
bmp.getHeight(),matrix,true);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(dstbmp, 10, 10, null);
5. 位图旋转
Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.pic180);
Matrix matrix=new Matrix();
matrix.postScale(0.8f, 0.8f);
matrix.postRotate(45);
Bitmap dstbmp=Bitmap.createBitmap(bmp,0,0,bmp.getWidth(),
bmp.getHeight(),matrix,true);
canvas.drawColor(Color.BLACK);
canvas.drawBitmap(dstbmp, 10, 10, null);
6.图片水印的生成方法
7.Canvas的save和restore
发表评论
-
service学习
2012-05-16 00:41 883http://www.cnblogs. ... -
InputStream,String,File相互转化
2012-05-14 23:32 12701. String --> InputStream ... -
转:实现类似手机QQ的可折叠固定标题列表
2012-04-12 19:05 1388http://douzifly.cnblog ... -
转:[Android]倒影效果的ImagView
2012-04-06 23:29 1381本文源自:http://blog.csdn.net/ke ... -
转:JDK中的URLConnection参数详解
2012-04-06 23:01 1177针对JDK中的URLConnection连 ... -
转:Game Engines for Android (Android游戏引擎)
2012-03-24 13:12 2721With Google IO fast approach ... -
做Android 系统/应用开发怎么可以不懂自动化测试
2012-03-22 15:02 1150http://blog.csdn.net/yiyaaixuex ... -
让Qt应用程序跑在Android上
2012-03-22 14:55 1361http://blog.c ... -
转:在android 2.3 AVD 模拟器上安装 google market 安卓市场
2012-03-22 14:29 1084http:// ... -
增加 addDataScheme("file") 才能收到SD卡插拔事件的原因分析 -- 浅析android事件过滤策略
2012-03-22 14:26 1961... -
转:andengine中的ParticleSystem
2012-01-18 11:08 1529看ParticleSystemSimpleExample,看得 ... -
test4:腾讯
2011-12-26 20:27 2www.qq.com -
test3:Yahoo
2011-12-26 20:25 2www.yahoo.com -
test2:google
2011-12-26 10:53 5www.google.com.hk -
test1:百度
2011-12-26 10:52 6www.baidu.com -
转:android 打包自己的自定义组件成JAR包
2011-12-24 11:54 1274http://www.cnblogs.c ... -
转:AndEngine中的字体加载及应用
2011-12-15 15:39 1547AndEngine中的字体加载及应用 An ... -
转:Android游戏框架AndEngine使用入门
2011-12-13 14:24 1580项目站点:http://www.andengine.org 项 ... -
转:notification更新数字的显示及AnimationDrawable的结合使用
2011-12-07 10:25 2617这是本人加入博客园的首篇博文,自己平常在工作学习过程遇 ... -
转:Android系统上(mv不可用)cp命令的替代方法
2011-11-30 18:32 9669Android系统上cp命令 ...
相关推荐
Android—BitMap与Canvas学习笔记
Android开发者学习笔记——View、Canvas、bitmap Android 开发者学习笔记——View、Canvas、bitmap 是 Android 开发中常用的类,本文将通过实例讲解 View、Canvas 等相关知识点。 从资源中获取位图 在 Android ...
### 八、Android Bitmap和Canvas学习笔记 - **Bitmap**:表示位图图像的对象,用于在内存中存储图像数据。 - **Canvas**:绘图区域,可以在其上绘制各种形状、图像等。 - **绘制技巧**:如使用 `Canvas.drawBitmap...
Android开发者学习笔记-View、Canvas、bitmap.pdf
### Android画图学习笔记知识点概览 #### 一、Android画图基础知识介绍 - **类的简介** - 在Android开发过程中,对于图形绘制的理解不仅仅局限于Google提供的官方文档,还需要深入掌握Java的基础类库,尤其是那些...
这个名为“Android学习实例备份”的资源集合,显然提供了一系列的学习材料,包括文档和笔记,帮助开发者在探索Android世界时提升技能。其中,"Graphics"这个标签可能指的是与Android图形处理相关的知识,这涵盖了从...
酷相机可能包含了各种拍照效果和滤镜,这些通常通过图像处理库实现,例如OpenCV、GLSurfaceView结合OpenGL ES进行实时滤镜处理,或者使用Android的Bitmap和Canvas进行后期处理。 七、图像存储 捕获的照片通常会保存...
首先,"Android开发者学习笔记——View、Canvas、bitmap.doc" 文件可能涵盖的是Android的基础图形绘制知识,包括View的生命周期、Canvas的基本用法以及如何在Bitmap上进行绘图。View是Android用户界面的基本构建块,...
在Android开发中,实现“雪花飘落特效”是一种常见的视觉效果,可以用于增强应用程序的用户界面体验,尤其是在节日或者冬季主题的应用...这个项目作为一个学习笔记,可以帮助开发者了解和掌握Android图形和动画的使用。
Canvas提供了丰富的绘图方法,如drawRect、drawCircle、drawBitmap等,允许开发者在屏幕上绘制矩形、圆形、位图等各种形状和图像。同时,Paint类则用于设置绘制的样式,如颜色、线条宽度、抗锯齿效果等。在创建...
在Android开发中,自定义控件是一种常见的需求,它能帮助开发者实现更丰富的交互和视觉效果。本篇笔记主要关注的是如何创建一个自定义的开关按钮,这个过程涉及到对View的继承、自定义属性的设置以及图形绘制。 ...
在Android开发领域,移动组件是构建应用程序的基础,尤其是在2D图形和游戏开发中。...这些资源对于学习和提升Android应用或游戏的视觉效果和用户体验非常有价值,同时也体现了作者持续学习和积累的精神。
在Android平台上,手写和涂鸦功能是许多应用中常用且有趣的特性,它们可以用于笔记、绘图或者增强用户交互体验。"Android源码——访米聊手写和涂鸦源码.zip"提供了实现此类功能的源代码示例,帮助开发者深入理解其...
通过研究和理解CancasDemo项目,开发者可以学习如何在Android应用中创建一个功能完善的手写板,同时也可以在此基础上扩展其他高级特性,如手势识别、颜色选择器、橡皮擦功能等。这个源码是一个很好的学习资源,对于...
3. **图形绘制**:游戏中的飞机、子弹和敌机等元素的绘制,通常会用到Canvas和Bitmap类,需要掌握如何在屏幕上动态绘制图形。 4. **事件处理**:玩家的操作如触摸屏幕控制飞机移动,需要通过监听MotionEvent来实现...
6. **多媒体支持**:MIUI便签支持图片和手绘功能,这就涉及到了Android的多媒体处理,包括Bitmap对象、Canvas绘图以及多媒体文件的读取和保存。 7. **权限管理**:由于涉及到读写文件和使用相机等敏感操作,MIUI...
- **学习资料管理**:可用于管理学生的学习资料,如笔记、讲义等。 - **个人文档整理**:帮助用户整理个人文档,便于随时查阅。 #### 五、总结 综上所述,本项目通过对现有源码的扩展与优化,成功地增加了书签、...