`

drawable

 
阅读更多

drawable 一些总结:

 

http://www.cnblogs.com/fighter/archive/2012/02/20/android-bitmap-drawable.html

(drawable的一些处理)

 

//1,已将图片保存到drawable目录下

//通过图片id获得Drawable

Resource res=gerResource();
Drawable drawable=res.getDrawable(id);//id为R.drawable.图片名称

//通过图片id获得Bitmap

Resource res=gerResource();

Bitmap bitmap=BitmapFactory.decodeResource(res, id);

//若只知道图片的名称,可以通过图片的名称获得图片的id

//name:图片的名称 defType:图片的类型(png,jpeg),defPackage:工程的包名
int id =int id =res.getIdentifier(name, defType, defPackage);
//获得id之后可以根据你的需要来获得Bitmap或Drawable

//2,已将图片保存到assest目录下

//知道图片的名称,通过inputstream打开图片

AssetManager asm=getAssetMg();
InputStream is=asm.open(name);//name:图片的名称
//获得Drawable
Drawable da = Drawable.createFromStream(is, null);
//获得Bitmap
Bitmap bitmap=BitmapFactory.decodeStream(is);

//3,图片保存在sdcard,已知图片的路径

//图片路径
String path = Environment.getExternalStorageDirectory().toString()+ "/DCIM/device.png";
RandomAccessFile mMiniThumbFile;
File imgfile = new File(path);
try {
    mMiniThumbFile = new RandomAccessFile(imgfile, "rw");
} catch (IOException ex) {
// Open as read-only so we can at least read the existing
// thumbnails.
try {
mMiniThumbFile = new RandomAccessFile(imgfile, "r");
} catch (IOException ex2) {
// ignore exception
System.out.println(ex2.toString());
}
}
data= new byte[10553];
try {
mMiniThumbFile.seek(0);
int got = mMiniThumbFile.read(data, 0, 10552);
System.out.println("got="+got);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println(e.toString());
}
if (data != null) {
//通过data获得bitmap
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0,data.length);

 

在进行Android开发过程中,我们经常会接触到Drawable对象(官方开发文档:A Drawable is a general abstraction for "something that can be drawn."),那么,若要使用数据库来进行存储及读取,该如何实现?
保存:

 

//第一步,将Drawable对象转化为Bitmap对象
Bitmap bmp = (((BitmapDrawable)tmp.image).getBitmap());
//第二步,声明并创建一个输出字节流对象
ByteArrayOutputStream os = new ByteArrayOutputStream();
//第三步,调用compress将Bitmap对象压缩为PNG格式,第二个参数为PNG图片质量,第三个参数为接收容器,即输出字节流os
bmp.compress(Bitmap.CompressFormat.PNG, 100, os);
//第四步,将输出字节流转换为字节数组,并直接进行存储数据库操作,注意,所对应的列的数据类型应该是BLOB类型
ContentValues values = new ContentValues();
values.put("image", os.toByteArray());
db.insert("apps", null, values);
db.close();

 

代码看起来比较繁琐,是因为过程的确挺繁琐的,不过可以简单的总结为:
Drawable→Bitmap→ByteArrayOutputStream→SQLite

 

读取:

 

//第一步,从数据库中读取出相应数据,并保存在字节数组中
byte[] blob = cursor.getBlob(cursor.getColumnIndex("image"));
//第二步,调用BitmapFactory的解码方法decodeByteArray把字节数组转换为Bitmap对象
Bitmap bmp = BitmapFactory.decodeByteArray(blob, 0, blob.length);
//第三步,调用BitmapDrawable构造函数生成一个BitmapDrawable对象,该对象继承Drawable对象,所以在需要处直接使用该对象即可
BitmapDrawable bd = new BitmapDrawable(bmp);

 很显然,读取是存储的相反过程,代码思路也差不多,但实现起来简单很多,总结思路为:
 

   SQLite→byte[]→Bitmap→BitmapDrawable


 

分享到:
评论

相关推荐

    drawable(图片).zip

    在Android开发中,`drawable`资源是至关重要的组成部分,它主要负责存储应用程序中的各种图形元素,如图标、背景、按钮形状等。`drawable`资源通常存储在项目的`res/drawable`目录下,并且根据不同的密度(ldpi, ...

    android 通过图片名称获取 drawable 目录下的图片

    ### Android 通过图片名称获取 Drawable 目录下的图片 在Android开发过程中,有时我们需要动态地根据图片名称来加载Drawable资源。这种需求虽然不常见,但在某些特定场景下却显得尤为重要,比如实现一个自定义控件...

    自定义Drawable 实现图片圆角、圆形、椭圆形

    在Android开发中,自定义Drawable是提升应用UI个性化和性能优化的重要手段。本文将深入探讨如何通过自定义Drawable实现图片的圆角、圆形以及椭圆形显示,帮助开发者更好地理解和运用这一技术。 首先,我们了解...

    Android Drawable 各种高效用法

    在Android开发中,Drawable是图形资源的核心组成部分,用于在用户界面上绘制各种图像,如按钮、背景、图标等。理解并熟练运用Drawable的各种高效用法对于优化应用性能和提升用户体验至关重要。以下是一些关于Android...

    android中的drawable集合

    在Android开发中,Drawable是图形和图像处理的重要组成部分,它是一种可以绘制到Canvas上的对象,广泛用于界面元素的装饰和状态表示。以下是对Android中drawable集合的详细解释: 1. **Bitmap Drawable**: Bitmap ...

    依赖的drawable文件

    在Android开发中,`drawable`文件是一个至关重要的组成部分,它主要负责应用的图形资源管理。`Drawable`资源是Android系统中用于表示图形的一种抽象概念,它可以是图片、颜色、形状或者动画等。在这个主题中,我们将...

    安卓Drawable的使用

    在Android开发中,Drawable是图形和图像对象的抽象表示,用于在用户界面上创建各种视觉效果。本篇文章将深入探讨Android中的Drawable及其使用方法,包括系统提供的各种Drawable类型以及如何自定义Drawable。 首先,...

    android安卓APP之13种Drawable位图片资源.zip_android客户端是什么

    在Android应用开发中,Drawable是用于图形和图像处理的核心组件,尤其在UI设计和交互中扮演着重要角色。本资源包“android安卓APP之13种Drawable位图片资源.zip”涵盖了Android开发中常见的13种Drawable类型,这些...

    Drawable的基础demo

    在Android开发中,`Drawable`是一个非常重要的概念,它代表了屏幕上的图形对象,可以是图像、颜色、形状或者是它们的组合。`Drawable`广泛应用于各种UI元素的背景、图标等,提供了丰富的自定义和动画效果。在这个...

    Android中Drawable分类汇总

    在Android开发中,Drawable是用于绘制图形的资源,它们被广泛应用于各种界面元素的背景或图片显示。Drawable资源是抽象的图形对象,可以包括图片、颜色、渐变等多种形式。在Android SDK中,开发者通常不需要直接操作...

    android的drawable图片集

    在Android开发中,`drawable`资源是至关重要的组成部分,它主要负责存储应用程序中使用的各种图形元素,如图标、背景图片等。本知识点将深入探讨`drawable`资源的使用、分类和适应不同屏幕密度的重要性。 首先,`...

    Android的Drawable学习Demo

    在Android开发中,Drawable是图形和图像处理的重要组成部分,它涵盖了多种类型的图像资源,如颜色、形状、位图等。本篇文章将深入探讨Android的Drawable及其应用,通过一个实际的Demo来展示其功能和用法。 Drawable...

    Android中不同类型的Drawable使用

    在Android开发中,Drawable是图形对象的抽象表示,用于在界面上绘制各种图像,如背景、按钮、图标等。理解并熟练使用不同类型的Drawable对于优化应用的视觉效果和性能至关重要。下面将详细介绍Android中常见的...

    Android-android-gif-drawable用于在Android上显示动画GIF

    在Android应用开发中,有时我们需要在界面上展示动态GIF图像,这时`android-gif-drawable`库就显得非常实用。这个库是专门为在Android平台上高效、流畅地播放GIF动画而设计的。本文将深入探讨如何使用`android-gif-...

    Android Drawable Bitmap 相互转换

    在Android开发中,Drawable和Bitmap是两种常用的图像资源类型,它们各有特点且在不同场景下有不同的优势。了解和掌握它们之间的相互转换对于优化性能和提高用户体验至关重要。本篇将详细介绍如何在Android中进行...

    自定义Drawable实现圆形图片

    本教程将详细讲解如何通过自定义`Drawable`来实现这样的功能。 首先,我们需要理解`Drawable`在Android中的作用。`Drawable`是Android图形库中的一个接口,它代表了可以绘制到屏幕上的任何对象,如颜色、形状、位图...

    xUtils3源码(已添加drawable支持)

    《深入解析xUtils3:新增Drawable支持》 xUtils3是一款广受Android开发者喜爱的开源框架,它提供了包括网络请求、数据库操作、图片加载等多种功能,极大地简化了开发过程。在原有功能的基础上,xUtils3增加了对...

    Drawable资源管理图片处理

    在Android开发中,Drawable资源是用于管理应用中各种图形元素,如图片、颜色、形状等的关键组成部分。了解和熟练掌握Drawable资源的管理与图片处理,对于优化应用性能和提升用户体验至关重要。以下是一些关于...

    android资源图片浏览,系统图片,android.R.drawable浏览,查看系统图片,查看android自带图片

    本篇文章将深入探讨如何浏览和使用Android系统中的图片资源,特别是`android.R.drawable`中的资源。`android.R.drawable`是Android SDK提供的一个预定义的资源集合,包含了大量的图标和图形,适用于各种UI组件和状态...

Global site tag (gtag.js) - Google Analytics