GVKun编程网logo

android imageview 笔记(android中imageview)

23

在本文中,我们将详细介绍androidimageview笔记的各个方面,并为您提供关于android中imageview的相关解答,同时,我们也将为您带来关于(android)关于gridview和I

在本文中,我们将详细介绍android imageview 笔记的各个方面,并为您提供关于android中imageview的相关解答,同时,我们也将为您带来关于(android) 关于 gridview 和 Imageview 的问题、Android CircleImageView圆形ImageView、Android CircleImageView圆形ImageView深入浅出、Android ImageView的有用知识。

本文目录一览:

android imageview 笔记(android中imageview)

android imageview 笔记(android中imageview)

android学习笔记34--------------有用代码集(不断更新)

5人收藏此文章, 我要收藏发表于3个月前 , 已有 758次阅读 共 0个评论

转载请注明原文出处:奔跑的蜗牛(袁方的技术博客)点击打开链接

一、当利用textview显示内容时,显示内容过多可能会折行或显示不全,那样效果很不好。今天发现android api中已经给出自动省略的功能。

实现如下:

源码 copy to clipboard 打印 ?
  1. <TextView
  2. android:layout_width="fill_parent"
  3. android:layout_height="wrap_content"
  4. android:id="@+id/hello"
  5. android:ellipsize="end"
  6. android:singleLine="true"
  7. />
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:id="@+id/hello" 
    android:ellipsize="end" 
   android:singleLine="true" 
/>

二、学习]ImageView的scaletype属性

ImageView的属性android:scaleType,即 ImageView.setScaleType(ImageView.ScaleType)。android:scaleType是控制图片如何 resized/moved来匹对ImageView的size。ImageView.ScaleType / android:scaleType值的意义区别:


源码 copy to clipboard 打印 ?
  1. CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截 取图片的居中部分显示
  2. CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽)
  3. CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小 或原来的size使得图片长/宽等于或小于View的长/宽
  4. FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示
  5. FIT_END / fitEnd 把 图片按比例扩大/缩小到View的宽度,显示在View的下部分位置
  6. FIT_START / fitStart 把 图片按比例扩大/缩小到View的宽度,显示在View的上部分位置
  7. FIT_XY / fitXY 把图片 不按比例 扩大/缩小到View的大小显示
  8. MATRIX / matrix 用矩阵来绘制
CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截 取图片的居中部分显示

CENTER_CROP / centerCrop 按比例扩大图片的size居中显示,使得图片长 (宽)等于或大于View的长(宽)

CENTER_INSIDE / centerInside 将图片的内容完整居中显示,通过按比例缩小 或原来的size使得图片长/宽等于或小于View的长/宽

FIT_CENTER / fitCenter 把图片按比例扩大/缩小到View的宽度,居中显示

FIT_END / fitEnd 把 图片按比例扩大/缩小到View的宽度,显示在View的下部分位置

FIT_START / fitStart 把 图片按比例扩大/缩小到View的宽度,显示在View的上部分位置

FIT_XY / fitXY 把图片 不按比例 扩大/缩小到View的大小显示

MATRIX / matrix 用矩阵来绘制



三、Uri与String之间的转换

Uri u = Uri.parse( "content://media/internal/audio/media/81" );


Android 通过Uri获取Bitmap对象

源码 copy to clipboard 打印 ?
  1. private Bitmap getBitmapFromUri(Uri uri)
  2. {
  3. try
  4. {
  5. // 读取uri所在的图片
  6. Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
  7. return bitmap;
  8. }
  9. catch (Exception e)
  10. {
  11. Log.e("[Android]", e.getMessage());
  12. Log.e("[Android]", "目录为:" + uri);
  13. e.printStackTrace();
  14. return null;
  15. }
  16. }
private Bitmap getBitmapFromUri(Uri uri)
 {
  try
  {
   // 读取uri所在的图片
   Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), uri);
   return bitmap;
  }
  catch (Exception e)
  {
   Log.e("[Android]", e.getMessage());
   Log.e("[Android]", "目录为:" + uri);
   e.printStackTrace();
   return null;
  }
 }

四、Android图片拖动效果(Gallery及ImageAdapter用法)

源码 copy to clipboard 打印 ?
  1. public class Activity01 extends Activity
  2. {
  3. /**
  4. * Gallery类概述(Gallery)此单词翻译过来为画廊,美术馆 一种view,以水平列表的方式显示在屏幕中央 看一眼图片就知道咋回事了
  5. * 此类继承了 AbsSpinner
  6. */
  7. @Override
  8. public void onCreate(Bundle savedInstanceState)
  9. {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.main);
  12. // 获得Gallery对象
  13. Gallery g = (Gallery) findViewById(R.id.Gallery01);
  14. // 添加ImageAdapter给Gallery对象 注意哦Gallery类并没有setAdapter这个方法
  15. // 这个方法是从AbsSpinner类继承的
  16. g.setAdapter(new ImageAdapter(this));
  17. // 设置Gallery的背景图片
  18. g.setBackgroundResource(R.drawable.bg0);
  19. // 设置Gallery的事件监听
  20. g.setOnItemClickListener(new GalleryItemListener());
  21. }
  22. class GalleryItemListener implements OnItemClickListener
  23. {
  24. public void onItemClick(AdapterView<?> parent, View view, int position,
  25. long id) {
  26. Toast.makeText(Activity01.this, ”你选择了” + (position + 1) + ” 号图片”,
  27. Toast.LENGTH_SHORT).show();
  28. }
  29. }
  30. }
public class Activity01 extends Activity
	{
		/**
		 * Gallery类概述(Gallery)此单词翻译过来为画廊,美术馆 一种view,以水平列表的方式显示在屏幕中央 看一眼图片就知道咋回事了
		 * 此类继承了 AbsSpinner
		 */
		@Override
		public void onCreate(Bundle savedInstanceState)
		{
			super.onCreate(savedInstanceState);
			setContentView(R.layout.main);
			// 获得Gallery对象
			Gallery g = (Gallery) findViewById(R.id.Gallery01);
			// 添加ImageAdapter给Gallery对象 注意哦Gallery类并没有setAdapter这个方法
			// 这个方法是从AbsSpinner类继承的
			g.setAdapter(new ImageAdapter(this));
			// 设置Gallery的背景图片
			g.setBackgroundResource(R.drawable.bg0);
			// 设置Gallery的事件监听
			g.setOnItemClickListener(new GalleryItemListener());
		}

		class GalleryItemListener implements OnItemClickListener
		{
			public void onItemClick(AdapterView<?> parent, View view, int position,
		long id) {
		Toast.makeText(Activity01.this, ”你选择了” + (position + 1) + ” 号图片”,
		Toast.LENGTH_SHORT).show();
		}
		}
	}

ImageAdapter类继承自BaseAdapter类 继承BaseAdapter类就会实现一些方法 这些方法可以用来 设置图片源、获取图片个数、设置显示的方式等等。

源码 copy to clipboard 打印 ?
  1. public class ImageAdapter extends BaseAdapter
  2. {
  3. // 定义Context
  4. private Context mContext;
  5. // 定义整型数组 即图片源
  6. private Integer[] mImageIds =
  7. { R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4,
  8. R.drawable.img5, R.drawable.img6, R.drawable.img7,
  9. R.drawable.img8, };
  10. // 声明ImageAdapter
  11. public ImageAdapter(Context c)
  12. {
  13. mContext = c;
  14. }
  15. // 获取图片的个数
  16. public int getCount()
  17. {
  18. return mImageIds.length;
  19. }
  20. // 获取图片在库中的位置
  21. public Object getItem(int position)
  22. {
  23. return position;
  24. }
  25. // 获取图片ID
  26. public long getItemId(int position)
  27. {
  28. return position;
  29. }
  30. public View getView(int position, View convertView, ViewGroup parent)
  31. {
  32. ImageView imageview = new ImageView(mContext);
  33. // 给ImageView设置资源
  34. imageview.setImageResource(mImageIds[position]);
  35. // 设置布局 图片120*120
  36. imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));
  37. // 设置显示比例类型
  38. imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
  39. return imageview;
  40. }
  41. }
public class ImageAdapter extends BaseAdapter
	{
		// 定义Context
		private Context mContext;
		// 定义整型数组 即图片源
		private Integer[] mImageIds =
		{ R.drawable.img1, R.drawable.img2, R.drawable.img3, R.drawable.img4,
				R.drawable.img5, R.drawable.img6, R.drawable.img7,
				R.drawable.img8, };

		// 声明ImageAdapter
		public ImageAdapter(Context c)
		{
			mContext = c;
		}

		// 获取图片的个数
		public int getCount()
		{
			return mImageIds.length;
		}

		// 获取图片在库中的位置
		public Object getItem(int position)
		{
			return position;
		}

		// 获取图片ID
		public long getItemId(int position)
		{
			return position;
		}

		public View getView(int position, View convertView, ViewGroup parent)
		{
			ImageView imageview = new ImageView(mContext);
			// 给ImageView设置资源
			imageview.setImageResource(mImageIds[position]);
			// 设置布局 图片120*120
			imageview.setLayoutParams(new Gallery.LayoutParams(120, 120));
			// 设置显示比例类型
			imageview.setScaleType(ImageView.ScaleType.FIT_CENTER);
			return imageview;
		}
	}

最后布局文件.

源码 copy to clipboard 打印 ?
  1. <?xml version=”1.0″ encoding=”utf-8″?>
  2. <Gallery xmlns:android=”http://schemas.android.com/apk/res/android”
  3. android:id=”@+id/Gallery01″
  4. android:layout_width=”fill_parent”
  5. android:layout_height=”fill_parent”
  6. android:spacing=”2px”
  7. >
  8. <!– android:spacing=”2px”用来设置图片之间的间距 –>
  9. </Gallery>
<?xml version=”1.0″ encoding=”utf-8″?>
<Gallery xmlns:android=”http://schemas.android.com/apk/res/android”
android:id=”@+id/Gallery01″
android:layout_width=”fill_parent”
android:layout_height=”fill_parent”
android:spacing=”2px”
>
<!– android:spacing=”2px”用来设置图片之间的间距 –>
</Gallery>

五、介绍一个重要方法那就是requestWindowFeature(featrueId),它的功能是启用窗体的扩展特性。参数是Window类中定义的常量。

枚举常量

源码 copy to clipboard 打印 ?
  1. 1.DEFAULT_FEATURES:系统默认状态,一般不需要指定
  2. 2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定
  3. 3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时
  4. 4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度
  5. 5.FEATURE_LEFT_ICON:标题栏左侧的图标
  6. 6.FEATURE_NO_TITLE:吴标题
  7. 7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。
  8. 8.FEATURE_PROGRESS:进度指示器功能
  9. 9.FEATURE_RIGHT_ICON:标题栏右侧的图标
1.DEFAULT_FEATURES:系统默认状态,一般不需要指定
2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定
3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时
4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度
5.FEATURE_LEFT_ICON:标题栏左侧的图标
6.FEATURE_NO_TITLE:吴标题
7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。
8.FEATURE_PROGRESS:进度指示器功能
9.FEATURE_RIGHT_ICON:标题栏右侧的图标

源码 copy to clipboard 打印 ?
  1. // 隐藏顶部程序名称 写在setContentView(R.layout.xxxx);之前,不然报错
  2. requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
  3. requestWindowFeature(Window.FEATURE_NO_TITLE);
  4. // 隐藏状态栏
  5. getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
  6. WindowManager.LayoutParams.FLAG_FULLSCREEN);
// 隐藏顶部程序名称 写在setContentView(R.layout.xxxx);之前,不然报错
		requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);		
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		
		// 隐藏状态栏
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);

六、使用MediaStore.Images和 Cursor查询本地图片和图片缩略图

先看一个实例:

源码 copy to clipboard 打印 ?
  1. String[] projection = { MediaStore.Images.Thumbnails._ID ,MediaStore.Images.Thumbnails.DATA};
  2. Cursor cursor = mActivity.getContentResolver().query(
  3. MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,//指定缩略图数据库的Uri
  4. projection,//指定所要查询的字段
  5. MediaStore.Images.Thumbnails._ID + " = ?",//查询条件
  6. new String[] {"123" }, //查询条件中问号对应的值
  7. null);
  8. cursor.moveToFirst();
  9. String id = cursor.getString(0);
  10. String data = cursor.getString(1);
String[] projection = { MediaStore.Images.Thumbnails._ID ,MediaStore.Images.Thumbnails.DATA};
Cursor cursor = mActivity.getContentResolver().query(
    MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,//指定缩略图数据库的Uri
    projection,//指定所要查询的字段
    MediaStore.Images.Thumbnails._ID + " = ?",//查询条件
    new String[] {"123" }, //查询条件中问号对应的值
    null);
cursor.moveToFirst();
String id = cursor.getString(0);
String data = cursor.getString(1);

查询图片缩略图数据库,获取id等于123的缩略图信息。

转换成Sql语句即为 select MediaStore.Images.Thumbnails._ID ,MediaStore.Images.Thumbnails.DATA from MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI where MediaStore.Images.Thumbnails._ID = 123

如果要查询图片,Uri地址为:MediaStore.Images.Media.EXTERNAL_CONTENT_URI

当要获取缩略图时:Bitmap bitmap = MediaStore.Images.Thumbnails.getThumbnail (mActivity.getContentResolver(), id, Thumbnails.MICRO_KIND, null)


(1)读取SD卡上面的图片信息

源码 copy to clipboard 打印 ?
  1. //想要的返回值所在的列
  2. String[] projection = { MediaStore.Images.Thumbnails._ID};
  3. //图片信息存储在 android.provider.MediaStore.Images.Thumbnails数据库
  4. //快速查询数据库中的图片对应存放路劲
  5. Cursor cursor = managedQuery(
  6. MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
  7. projection, //List of columns to return :想要他返回的列
  8. null, // Return all rows
  9. null,
  10. null);
  11. int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
  12. uriArray = new Uri[cursor.getCount()];//把图片路径放在数组中
//想要的返回值所在的列   
        String[] projection = { MediaStore.Images.Thumbnails._ID};  
        //图片信息存储在 android.provider.MediaStore.Images.Thumbnails数据库    
        //快速查询数据库中的图片对应存放路劲            
        Cursor cursor = managedQuery(  
                MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,  
                projection, //List of columns to return :想要他返回的列   
                null, // Return all rows   
                null,  
                null);  
        int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);  
        uriArray = new Uri[cursor.getCount()];//把图片路径放在数组中

(2)将读取的图片生成缩略图

源码 copy to clipboard 打印 ?
  1. while(cursor.moveToNext()&&i<cursor.getCount())
  2. { //移到指定的位置,遍历数据库
  3. cursor.moveToPosition(i);
  4. uri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,cursor.getInt(columnIndex)+"");
  5. uriArray[i]=uri;
  6. try {
  7. bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));
  8. if (bitmap != null) {
  9. //将原来的位图转换成新的位图
  10. newBitmap = Bitmap.createScaledBitmap(bitmap,80, 80,true);
  11. bitmap.recycle();//释放内存
  12. if (newBitmap != null) {
  13. publishProgress(new LoadedImage(newBitmap));
  14. }
  15. }
  16. } catch (IOException e) {}
  17. i++;
  18. }
while(cursor.moveToNext()&&i<cursor.getCount())  
        {   //移到指定的位置,遍历数据库   
            cursor.moveToPosition(i);  
            uri = Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,cursor.getInt(columnIndex)+"");  
            uriArray[i]=uri;  
            try {  
                bitmap = BitmapFactory.decodeStream(getContentResolver().openInputStream(uri));  
                if (bitmap != null) {  
                    //将原来的位图转换成新的位图   
                    newBitmap = Bitmap.createScaledBitmap(bitmap,80, 80,true);  
                    bitmap.recycle();//释放内存   
                    if (newBitmap != null) {  
                        publishProgress(new LoadedImage(newBitmap));  
                    }  
                }  
            } catch (IOException e) {}  
            i++;  
        }

android在处理一写图片资源的时候,会进行一些类型的转换,现在有空整理一下:

1、Drawable → Bitmap

源码 copy to clipboard 打印 ?
  1. public static Bitmap drawableToBitmap(Drawable drawable) {
  2. Bitmap bitmap = Bitmap
  3. .createBitmap(
  4. drawable.getIntrinsicWidth(),
  5. drawable.getIntrinsicHeight(),
  6. drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
  7. : Bitmap.Config.RGB_565);
  8. Canvas canvas = new Canvas(bitmap);
  9. //canvas.setBitmap(bitmap);
  10. drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
  11. drawable.draw(canvas);
  12. return bitmap;
  13. }
public static Bitmap drawableToBitmap(Drawable drawable) {   
           
        Bitmap bitmap = Bitmap   
                        .createBitmap(   
                                        drawable.getIntrinsicWidth(),   
                                        drawable.getIntrinsicHeight(),   
                                        drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888   
                                                        : Bitmap.Config.RGB_565);   
        Canvas canvas = new Canvas(bitmap);   
        //canvas.setBitmap(bitmap);   
        drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());   
        drawable.draw(canvas);   
        return bitmap;   
}

2、从资源中获取Bitmap

源码 copy to clipboard 打印 ?
  1. Resources res=getResources();
  2. Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);
Resources res=getResources();   
  
Bitmap bmp=BitmapFactory.decodeResource(res, R.drawable.pic);

3、Bitmap → byte[]

源码 copy to clipboard 打印 ?
  1. private byte[] Bitmap2Bytes(Bitmap bm){
  2. ByteArrayOutputStream baos = new ByteArrayOutputStream();
  3. bm.compress(Bitmap.CompressFormat.PNG, 100, baos);
  4. return baos.toByteArray();
  5. }
private byte[] Bitmap2Bytes(Bitmap bm){   
    ByteArrayOutputStream baos = new ByteArrayOutputStream();     
    bm.compress(Bitmap.CompressFormat.PNG, 100, baos);     
    return baos.toByteArray();   
   }

4、 byte[] → Bitmap

源码 copy to clipboard 打印 ?
  1. private Bitmap Bytes2Bimap(byte[] b){
  2. if(b.length!=0){
  3. return BitmapFactory.decodeByteArray(b, 0, b.length);
  4. }
  5. else {
  6. return null;
  7. }
  8. }
private Bitmap Bytes2Bimap(byte[] b){   
            if(b.length!=0){   
                return BitmapFactory.decodeByteArray(b, 0, b.length);   
            }   
            else {   
                return null;   
            }   
      }


七、保存图片到图库

Images.Media.EXTERNAL_CONTENT_URI这是一个系统图片数据表,图库里面的图片数据都是从这里面查询出来的;调用insert就是往这个表里面插入一条数据,插入成功的话,下次加载图库,就可以把新加入的数据从这个表中查询并展示出来了,


源码 copy to clipboard 打印 ?
  1. Images.Media.EXTERNAL_CONTENT_URI:数据表肯定就包括一些属性字段,如下:
  2. values.put(Images.Media.TITLE, title);
  3. values.put(Images.Media.DISPLAY_NAME, filename);
  4. values.put(Images.Media.DATE_TAKEN, dateTaken);
  5. values.put(Images.Media.MIME_TYPE, IMAGE_MIME_TYPE);
  6. values.put(Images.Media.ORIENTATION, degree[0]);
  7. values.put(Images.Media.DATA, filePath);
  8. values.put(Images.Media.SIZE, size);
Images.Media.EXTERNAL_CONTENT_URI:数据表肯定就包括一些属性字段,如下:
values.put(Images.Media.TITLE, title);
values.put(Images.Media.DISPLAY_NAME, filename);
values.put(Images.Media.DATE_TAKEN, dateTaken);
values.put(Images.Media.MIME_TYPE, IMAGE_MIME_TYPE);
values.put(Images.Media.ORIENTATION, degree[0]);
values.put(Images.Media.DATA, filePath);
values.put(Images.Media.SIZE, size);


上面这些内容的键值就是数据表里面的字段,当然这并不是所有的,只是传一些比较重要和常用的保存起来;比如图片的名称、时间、大小、类型等。


八、根据Uri获取文件绝对路径


源码 copy to clipboard 打印 ?
  1. protected String getAbsoluteImagePath(Uri uri)
  2. {
  3. // can post image
  4. String [] proj={MediaStore.Images.Media.DATA};
  5. Cursor cursor = managedQuery( uri,
  6. proj, // Which columns to return
  7. null, // WHERE clause; which rows to return (all rows)
  8. null, // WHERE clause selection arguments (none)
  9. null); // Order-by clause (ascending by name)
  10. int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
  11. cursor.moveToFirst();
  12. return cursor.getString(column_index);
  13. 原文链接:http://blog.csdn.net/yf210yf/article/details/7295577 

(android) 关于 gridview 和 Imageview 的问题

(android) 关于 gridview 和 Imageview 的问题

我的gridview里面的格子只放了一个imageview,然后我用simpleadapter去适配它的时候对应imageview这个控件应该存入什么类型的数据呢,是int还是object呢?idint吗?我尝试存入了一个R.drawable.(名字)进去结果不行。

Android CircleImageView圆形ImageView

Android CircleImageView圆形ImageView



Android CircleImageView圆形ImageView

CircleImageView是github上一个第三方开源的实现圆形ImageView的项目。
其在github上的项目主页是:https://github.com/hdodenhof/CircleImageView
实现的结果如图:


重点说一说CircleImageView和附录文章1的异同,在开发中如何在特定情况下该选择何种技术实现方案。
(一)附录1的RoundedBitmapDrawable是谷歌官方的圆形实现,RoundedBitmapDrawable的最大特点是可以正在上层Java代码中灵活定制如边角弧度、圆角矩形、把一个矩形处理成圆形图、椭圆形图等等,但是RoundedBitmapDrawable没有提供直接定义边框的功能,比如,就像上图中的圆形图,边缘部分要加一定厚度的外层边框线,则RoundedBitmapDrawable无法直接实现。
(二)有些开发情况中,不一定非要把设置、实现圆形图的代码全部放在上层Java代码中写,而只是想写在xml布局文件中,那么RoundedBitmapDrawable就没法直接在xml布局文件中写,而CircleImageView则直接可以在xml中灵活定义边框线厚度、颜色等等。
(三)CircleImageView顾名思义,专业处理圆形图,CircleImageView不像RoundedBitmapDrawable那样还可以制作圆角矩形、椭圆图等等。

总结:
(一)假设如果仅仅只是在上层Java代码中设置一个圆形图(比如常见的开发场景中设置圆形用户头像),那么此时在xml布局中先写好一个ImageView,然后上层Java代码从服务器读取一个头像的byte字节,转化为Bitmap,然后通过RoundedBitmapDrawable处理成圆形drawable设置到ImageView中,那么这种开发场景就可以简单的使用RoundedBitmapDrawable。
(二)如果对图像的UI设计要求变得复杂,比如加边框、边线厚度、边线颜色等等都要有,且不同的圆图要有一定的遮盖等等,那这种情况下就不再合适用RoundedBitmapDrawable,而比较适合用CircleImageView。


附录:
1,《Android RoundedBitmapDrawable:Android官方的圆角图形图象实现方案》链接:http://blog.csdn.net/zhangphil/article/details/51829650
2,《Android圆形头像图Circle ImageView》链接:http://blog.csdn.net/zhangphil/article/details/44960551
3,《Android CustomShapeImageView对图片进行各种样式裁剪:圆形、星形、心形、花瓣形等》链接:http://blog.csdn.net/zhangphil/article/details/50119921

Android CircleImageView圆形ImageView深入浅出

Android CircleImageView圆形ImageView深入浅出

重点说一说CircleImageView和附录文章1的异同,在开发中如何在特定情况下该选择何种技术实现方案。
(一)附录1的RoundedBitmapDrawable是谷歌官方的圆形实现,RoundedBitmapDrawable的最大特点是可以正在上层Java代码中灵活定制如边角弧度、圆角矩形、把一个矩形处理成圆形图、椭圆形图等等,但是RoundedBitmapDrawable没有提供直接定义边框的功能,比如,就像上图中的圆形图,边缘部分要加一定厚度的外层边框线,则RoundedBitmapDrawable无法直接实现。
(二)有些开发情况中,不一定非要把设置、实现圆形图的代码全部放在上层Java代码中写,而只是想写在xml布局文件中,那么RoundedBitmapDrawable就没法直接在xml布局文件中写,而CircleImageView则直接可以在xml中灵活定义边框线厚度、颜色等等。
(三)CircleImageView顾名思义,专业处理圆形图,CircleImageView不像RoundedBitmapDrawable那样还可以制作圆角矩形、椭圆图等等。

总结:
(一)假设如果仅仅只是在上层Java代码中设置一个圆形图(比如常见的开发场景中设置圆形用户头像),那么此时在xml布局中先写好一个ImageView,然后上层Java代码从服务器读取一个头像的byte字节,转化为Bitmap,然后通过RoundedBitmapDrawable处理成圆形drawable设置到ImageView中,那么这种开发场景就可以简单的使用RoundedBitmapDrawable。
(二)如果对图像的UI设计要求变得复杂,比如加边框、边线厚度、边线颜色等等都要有,且不同的圆图要有一定的遮盖等等,那这种情况下就不再合适用RoundedBitmapDrawable,而比较适合用CircleImageView。

Android ImageView

Android ImageView

1、ScaleType

\

原文地址:http://www.2cto.com/kf/201411/348601.html

算法研究:http://blog.csdn.net/fancylovejava/article/details/13507795

可缩放拖拽图片控件:

https://github.com/boycy815/PinchImageView

2、iamgeView或者drawable变灰色:

将ImageView变成灰色
ColorMatrix matrix = new ColorMatrix();
matrix.setSaturation(0);//饱和度 0灰色 100过度彩色,50正常
ColorMatrixColorFilter filter = new ColorMatrixColorFilter(matrix);
image.setColorFilter(filter);//drawable.setColorFilter(cf);  

 

今天的关于android imageview 笔记android中imageview的分享已经结束,谢谢您的关注,如果想了解更多关于(android) 关于 gridview 和 Imageview 的问题、Android CircleImageView圆形ImageView、Android CircleImageView圆形ImageView深入浅出、Android ImageView的相关知识,请在本站进行查询。

本文标签: