android: ImageView的setImageBitmap()方法

android: ImageView的setImageBitmap()方法,第1张

一、ImageView的setImageBitmap()是设置imageView组件的显示。它的定义和源码如下:

1、在源代码中输入:if this is used frequently,may handle bitmaps explicitly // to reduce the intermedite drawable abject;

2、它实际上是对setImageDrawable接口的封装,支持直接略过Bitmap对象进行组件的设置。需要指出的是这个方法设置时,进行大的处理时,注意对的缩放,否则会内存溢出。

扩展资料:

一、Bitmap设置代码:

1、ImageView的setImageBitmap()是设置imageView组件的显示,实际上是setImageDrawable接口的封装,支持直接略过Bitmap对象进行组件的设置。

2、需要指出的是这个方法设置时,进行大的处理时,注意对的缩放,否则会内存溢出。if this is used frequently,may handle bitmaps explicitly // to reduce the intermedite drawable abject;

二、根据位深度,可将位图分为1、4、8、16、24及32位图像等。每个像素使用的信息位数越多,可用的颜色就越多,颜色表现就越逼真,相应的数据量越大。例如,位深度为 1 的像素位图只有两个可能的值(黑色和白色)。

1、所以又称为二值位图。位深度为 8 的图像有 2^8(即 256)个可能的值。位深度为 8 的灰度模式图像有 256 个可能的灰色值。

2、RGB图像由三个颜色通道组成。8 位/通道的 RGB 图像中的每个通道有 256 个可能的值,这意味着该图像有 1600 万个以上可能的颜色值。

3、有时将带有 8 位/通道 (bpc) 的 RGB 图像称作 24 位图像(8 位 x 3 通道 = 24 位数据/像素)。通常将使用24位RGB组合数据位表示的的位图称为真彩色位图。

4、BMP文件是微软公司所开发的一种交换和存储数据的方法,各个版本的Windows都支持BMP格式的文件。Windows提供了快速、方便的存储和压缩BMP文件的方法。BMP格式的缺点是,要占用较大的存储空间,文件尺寸太大。

参考资料来源:百度百科-博士能IMAGEVIEW 15-45X50(78-7348)

参考资料来源:百度百科-Bitmap

android中的imageview只能显示矩形的,这样一来不能满足我们其他的需求,比如要显示圆形的,这个时候,我们就需要自定义imageview了,其原理就是首先获取到的bitmap,然后进行裁剪圆形的bitmap,然后在ondraw()进行绘制圆形输出。

GridView的每个item为一个ImageView,我想根据点击不同的item来设置不同的监听,即根据获取的ImageView的资源ID做出不同的 *** 作,不想用position来监听,感觉不是很严谨。请高手指教!------解决方案--------------------------------------------------------------解决方案--------------------------------------------------------这篇文章也许能帮到你,我和你一样,原来也遇到类似的问题。

imageViewgetBackground(),是获取它的背景;

在调用getDrawingCache的时候要注意下面2点:

在调用getDrawingCache()方法从ImageView对象获取图像之前,一定要调用setDrawingCacheEnabled(true)方法:

imageviewsetDrawingCacheEnabled(true);

否则,无法从ImageView对象iv_photo中获取图像;

在调用getDrawingCache()方法从ImageView对象获取图像之后,一定要调用setDrawingCacheEnabled(false)方法:

imageviewsetDrawingCacheEnabled(false);

以清空画图缓冲区,否则,下一次从ImageView对象iv_photo中获取的图像,还是原来的图像。

先初始化;

注意自定义 的

private final String IMAGE_TYPE = "image/";private final int IMAGE_CODE = 0;

private void setImage() {

Intent getAlbum = new Intent(IntentACTION_GET_CONTENT);    getAlbumsetType(IMAGE_TYPE);    startActivityForResult(getAlbum, IMAGE_CODE);}

这里使用Intent获得相册数据,并返回原来界面;

这里说明一下

startActivityForResult(getAlbum, IMAGE_CODE);

补充{

startActivityForResult与startActivity的不同之处在于:

1、startActivity( ) 

仅仅是跳转到目标页面,若是想跳回当前页面,则必须再使用一次startActivity( )。

2、startActivityForResult( ) 

可以一次性完成这项任务,当程序执行到这段代码的时候,假若从T1Activity跳转到下一个Text2Activity,而当这个Text2Activity调用了finish()方法以后,程序会自动跳转回T1Activity,并调用前一个T1Activity中的onActivityResult( )方法。

}

startActivityForResult(getAlbum, IMAGE_CODE);

这里采用startActivityForResult来做跳转,此处的IMAGE_CODE实质是0为一个依据,可以写其他的值,但一定要>=0

然后重写onActivityResult用于接收刚刚得到的数据

protected  void onActivityResult(int requestCode, int resultCode, Intent data) {

Bitmap bm = null;    ContentResolver resolver = getContentResolver();    if (requestCode == IMAGE_CODE) {        try {

Uri originalUri = datagetData();            bm = MediaStoreImagesMediagetBitmap(resolver, originalUri);            imgShowsetImageBitmap(bm);        } catch (IOException e) {

eprintStackTrace();        }

}

补充{

ContentProvider-----数据提供给第三方应用程序使用时使用

因为在Android系统里面,数据库是私有的。一般情况下外部应用程序是没有权限读取其他应用程序的数据。如果你想公开你自己的数据,你有两个选择:你可以创建你自己的内容提供器(一个ContentProvider子类)或者你可以给已有的提供器添加数据-如果存在一个控制同样类型数据的内容提供器且你拥有写的权限

}

这里是创建一个新的内容提供器,然后在Activity当中通过getContentResolver()可以得到当前应用的 ContentResolver实例

if (requestCode == IMAGE_CODE) {

resultCode为回传的标记这句话是在确认是否回传的是你所需要的;如果是就执行try;不然就执行catch (IOException e) {

eprintStackTrace();}先说这里当try语句中出现异常是时,会执行catch中的语句,IOException e也就是实例化Exception类型的对象。e是此对象引用名称。然后e(引用)会自动调用Exception类中指定的方法,也就出现了eprintStackTrace() ;。printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。

try {

Uri originalUri = datagetData();    bm = MediaStoreImagesMediagetBitmap(resolver, originalUri);    imgShowsetImageBitmap(bm);接收数据处理数据并显示照片。

然后进行测试。

另附源码:

MainActivity:

package comexampleadministratormyapplication1;import androidgraphicsBitmapFactory;import androidsupportv7appAppCompatActivity;import androidosBundle;import javaioIOException;import androidnetUri;import androidosBundle;import androidproviderMediaStore;import androidappActivity;import androidcontentContentResolver;import androidcontentIntent;import androidgraphicsBitmap;import androidviewView;import androidviewViewOnClickListener;import androidwidgetButton;import androidwidgetImageView;public class MainActivity extends AppCompatActivity {    private final String IMAGE_TYPE = "image/";    private final int IMAGE_CODE = 0;    private Button choose=null;    private ImageView imgShow;    @Override    protected void onCreate(Bundle savedInstanceState) {        superonCreate(savedInstanceState);        setContentView(Rlayoutactivity_main);        init();}    private void init() {       choose=(Button) findViewById(Ridbutton1);        imgShow=(ImageView) findViewById(RidimgShow);        choosesetOnClickListener(listener);    }    private OnClickListener listener=new OnClickListener(){        @Override        public void onClick(View v) {

setImage();            }

};        private void setImage() {

Intent getAlbum = new Intent(IntentACTION_GET_CONTENT);            getAlbumsetType(IMAGE_TYPE);            startActivityForResult(getAlbum, IMAGE_CODE);        }    protected  void onActivityResult(int requestCode, int resultCode, Intent data) {

Bitmap bm = null;        ContentResolver resolver = getContentResolver();        if (requestCode == IMAGE_CODE) {            try {

Uri originalUri = datagetData();                bm = MediaStoreImagesMediagetBitmap(resolver, originalUri);                imgShowsetImageBitmap(bm);            } catch (IOException e) {

eprintStackTrace();            }

}

}

}

layout:activity_mainxml:

<xml version="10" encoding="utf-8"><LinearLayout xmlns:android=">

androidstudio中点击按钮后改变显示。步骤如下:

1、在布局文件中添加一个ImageView组件,用于显示。

2、在代码中获取该ImageView组件的引用,并为其设置默认的资源。

3、在代码中获取需要触发变化的按钮的引用,并为其添加一个点击事件监听器。

4、在该监听器中,使用setImageResource方法为ImageView组件设置另一张资源。

<ImageView

android:id="@+id/img_face"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:scaleType="matrix"

android:layout_centerVertical="true"

android:layout_alignParentLeft="true"

android:layout_marginLeft="8dp"

android:padding="8dp"

android:src="@drawable/face"

/>

try{

//查找imgview控件

ImageView v=(ImageView)thisfindViewById(Ridimg_face);

// 动态修改imageview 背景, android:src 设置backgroundRes 也可以。

vsetImageResource( Rdrawableface1 );

}catch(Exception e){

eprintStackTrace();

}

以上就是关于android: ImageView的setImageBitmap()方法全部的内容,包括:android: ImageView的setImageBitmap()方法、android中 怎么显示一直图片为圆形图片、怎么获取ImageView图片的资源ID等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9751313.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存