android琐碎知识点记载

 一 图片知识点

当Drawable资源被R.java收录之后,就可以在XML资源文件中,通过@drawable/draw_name来访问该Drawable对象,也可以在Java代码中通过R.drawable.drwa_name访问到该Drawable资源的ID,它是一个int类型的常量,如果需要获取实际Drawable资源对象,则可以使用Resource.getDrawable(int id)方法通过其Drawable资源ID获取对应的Drawable资源的对象。

   BitmapFactory解析不同数据源,获取Bitmap的常用静态方法方法如下:

         static Bitmap decodeByteArray(byte[] data,int offset int length):从字节数组data中,offset位置开始,将长度为length的直接数据解析成Bitmap对象。

         static Bitmap decodeFile(String pathName):解析pathName路径指定的文件,创建Bitmap对象。

        static Bitmap decodeResource(Resources res,int id):根据Drawable资源ID从Android资源中解析创建Bitmap对象。

         static Bitmap decodeStream(InputStream is):从指定输入流中解析创建Bitmap对象。

   Android为Bitmap提供了两个方法来判断Bitmap对象是否已经被回收,以及强制Bitmap回收。

         boolean isRecycled():判断该Bitmap对象是否被回收

         viod recycle():强制Bitmap对象立即回收自己。


  得到一个屏幕尺寸的三种方法如下:
        // 通过WindowManager获取

        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);

        // 通过Resources获取 
        DisplayMetrics dm2 = getResources().getDisplayMetrics();

        // 获取屏幕的默认分辨率
        Display display = getWindowManager().getDefaultDisplay();
        System.out.println("width-display :" + display.getWidth());
        System.out.println("heigth-display :" + display.getHeight());

在安卓4.2系统中,使用方法一得到了正确的屏幕尺寸值,而使用方法二和三得到的值全部为零。原因不祥。其中方法三中的display.getWidth()和display.getHeight()已被弃用。


DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);//display = getWindowManager().getDefaultDisplay();display.getMetrics(dm)(把屏幕尺寸信息赋值给DisplayMetrics dm);
width = dm.widthPixels;
height = dm.heightPixels;


matrix简介

对于一个图片变换的处理,需要Matrix类的支持,它位于"android.graphics.Matrix"包下,是Android提供的一个矩阵工具类,它本身不能对图像或View进行变换,但它可与其它API结合来控制图形、View的变换,如Canvas。

对于一个从BitmapFactory.decodeXxx()方法解析创建的Bitmap对象而言,它是一个只读的对象,无法对其进行处理,必须使用Bitmap.createBitmap()方法重新创建一个原Bitmap对象的拷贝,才可以对拷贝的Bitmap进行处理。
因为图像的变换是针对每一个像素点的,所以有些变换可能发生像素点的丢失,这里需要使用Paint.setAnitiAlias(boolean)设置来消除锯齿,这样图片变换后的效果会好很多。
在重新创建一个Bitmap对象的拷贝的时候,需要注意它的宽高,如果设置不妥,很可能变换后的像素点已经移动到"图片之外"去了。

Imageview介绍

ImageView提供了多个setImageXxx()的方法,以适应不同来源的图片资源,这些方法有如下几个:

  void setImageBitmap(Bitmap bm):设定一个Bitmap对象作为ImageView的显示图像。
  void setImageDrawable(Drawable drawable):设定一个Drawable对象作为ImageView的显示图像。
  void setImageResource(int resId):设定一个Drawable资源ID作为ImageView的显示图像。
  void setImageURI(Uri uir):设定一个Uri地址作为ImageView的显示对象,可以是网络Uri或者本地内容提供者的Uri地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值