属性
XML属性 | java代码 | 说明 |
android:adjustViewBounds | setAdjustViewBounds(boolean adjustViewBounds) | 调整自己的边界来来保持所显示图片的长宽比 好像没效果 |
android:cropToPadding | setCropToPadding(boolean cropToPadding) | 组件将会被裁剪到保留该imageview的padding |
android:maxWidth | 最大宽度 | |
android:maxHeight | setMaxHeight(int maxHeight) | 最大高低 |
android:src | setMaxWidth(int maxWidth) | 图片ID |
android:scaleType | setScaleType(ScaleType scaleType) ImageView.ScaleType.MATRIX ImageView.ScaleType.FIT_XYImageView.ScaleType.FIT_STARTImageView.ScaleType.FIT_CENTERImageView.ScaleType.FIT_ENDImageView.ScaleType.CENTERImageView.ScaleType.CENTER_CROPImageView.ScaleType.CENTER_INSIDE | 图片缩放样式 原始图片
种类 matrix:好想是可以对图片进行缩放、旋转等一些操作,用到了再说 fitXY:按imageview的长度、宽度拉伸,并填充,不会保持长宽比例 fitStart:保持长宽比例缩放,并显示在左上角(好像默认的就是这个) fitCenter:保持长宽比例缩放,并显示在中间 fitEnd:保持长宽比,并显示在右下角 center:图片放在中间位置,不进行任何缩放 centerCrop: 说不清,反正就是按长宽比放到到所有的都显示下,图片有可能会被截 centerInside:网上说保持长宽比,缩放到使完全显示图片,图是完整的 和center不是一样吗?是我弄得不对?
|
例子
图片浏览器,可以设置图片的透明度、浏览图片的局部位置。稍微扩展了下ImageView,点击放大位置会生成个红点(具体可以自己扩展)
主要是演示功能,图片什么的都没释放
XML
15 6 73 74 75 7610 11 15 16 21 22 27 28 33 34 35 36 37 38 42 43 48 49 55 56 57 58 63 64 70 71 72
MyImageView.java
1 public class MyImageView extends ImageView{ 2 3 public MyImageView(Context context, AttributeSet attrs) { 4 super(context, attrs); 5 // TODO 自动生成的构造函数存根 6 } 7 8 9 //定义一个画笔10 private Paint paint=new Paint();11 private float cx=0;12 private float cy=0;13 14 @Override15 protected void onDraw(Canvas canvas) {16 super.onDraw(canvas);17 18 //设置画笔颜色,这里制定红色19 paint.setColor(Color.RED);20 //绘制一个位置在cx,cy的半径15,的圆21 canvas.drawCircle(cx, cy, 15, paint);22 23 }24 25 @Override26 public boolean onTouchEvent(MotionEvent event) {27 cx=event.getX();28 cy=event.getY();29 //重绘30 invalidate();31 32 return true;33 }34 35 }
MainActivity.java
1 public class MainActivity extends Activity { 2 3 Button btn1; 4 Button btn2; 5 Button btn3; 6 MyImageView iv1; 7 ImageView iv2; 8 9 //定义图片资源10 int[] imageIDS=new int[]{11 R.drawable.pic1,12 R.drawable.pic2,13 R.drawable.pic3,14 R.drawable.pic4 15 };16 //当前显示第几张图片,默认第一张17 int index=0;18 19 protected void onCreate(Bundle savedInstanceState) {20 super.onCreate(savedInstanceState);21 setContentView(R.layout.activity_main);22 23 btn1=(Button)findViewById(R.id.button1);24 btn2=(Button)findViewById(R.id.button2);25 btn3=(Button)findViewById(R.id.button3);26 iv1=(MyImageView)findViewById(R.id.imageView1);27 iv2=(ImageView)findViewById(R.id.imageView2);28 29 //设置第一张30 iv1.setImageResource(imageIDS[index]);31 btn3.setOnClickListener(new OnClickListener() {32 public void onClick(View v) {33 //下一张34 index=index+1;35 iv1.setImageResource(imageIDS[index%4]);36 }37 });38 39 //增加透明度40 btn1.setOnClickListener(new OnClickListener() {41 @Override42 public void onClick(View v) {43 if((iv1.getImageAlpha()+10)>255){44 iv1.setImageAlpha(255);45 }else{46 iv1.setImageAlpha(iv1.getImageAlpha()+10);47 }48 }49 });50 51 //减少透明度52 btn2.setOnClickListener(new OnClickListener() {53 @Override54 public void onClick(View v) {55 if((iv1.getImageAlpha()-10)<0){56 iv1.setImageAlpha(0);57 }else{58 iv1.setImageAlpha(iv1.getImageAlpha()-10);59 }60 }61 });62 63 iv1.setOnTouchListener(new OnTouchListener() {64 65 public boolean onTouch(View v, MotionEvent event) {66 //获取图片67 BitmapDrawable bd=(BitmapDrawable)iv1.getDrawable();68 Bitmap bitmap=bd.getBitmap();69 70 float scale=bitmap.getWidth()/720;71 //获取手指点的位置72 float x=event.getX()*scale;73 float y=event.getY()*scale;74 if((x+240)>bitmap.getWidth()){75 x=bitmap.getWidth()-240;76 }77 if((y+240)>bitmap.getHeight()){78 x=bitmap.getHeight()-240;79 }80 81 Bitmap bitmap1=Bitmap.createBitmap(bitmap,(int)x, (int)y, 240,240);82 iv2.setImageBitmap(bitmap1);83 84 return false;85 }86 });87 88 89 }90 91 92 }