博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
安卓学习-界面-ui-ImageView
阅读量:4357 次
发布时间:2019-06-07

本文共 5236 字,大约阅读时间需要 17 分钟。

属性

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_XY
ImageView.ScaleType.FIT_START
ImageView.ScaleType.FIT_CENTER
ImageView.ScaleType.FIT_END
ImageView.ScaleType.CENTER
ImageView.ScaleType.CENTER_CROP
ImageView.ScaleType.CENTER_INSIDE

图片缩放样式

原始图片

种类

matrix:好想是可以对图片进行缩放、旋转等一些操作,用到了再说

fitXY:按imageview的长度、宽度拉伸,并填充,不会保持长宽比例

fitStart:保持长宽比例缩放,并显示在左上角(好像默认的就是这个)

fitCenter:保持长宽比例缩放,并显示在中间

fitEnd:保持长宽比,并显示在右下角

center:图片放在中间位置,不进行任何缩放

 centerCrop: 说不清,反正就是按长宽比放到到所有的都显示下,图片有可能会被截

centerInside:网上说保持长宽比,缩放到使完全显示图片,图是完整的

和center不是一样吗?是我弄得不对?

 

例子

图片浏览器,可以设置图片的透明度、浏览图片的局部位置。稍微扩展了下ImageView,点击放大位置会生成个红点(具体可以自己扩展)

主要是演示功能,图片什么的都没释放

XML

1 
5 6
10 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
73 74 75 76
View Code

 

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 }
View Code

 

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 }
View Code

 

转载于:https://www.cnblogs.com/weijj/p/3949401.html

你可能感兴趣的文章
异步JS:$.Deferred的使用
查看>>
Angular Material 教程之布局篇
查看>>
正则表达式
查看>>
ASP里面eof、bof都是什么意思?
查看>>
Golang学习 - path/filepath 包
查看>>
java序列化和反序列化
查看>>
【转】Eclipse和PyDev搭建完美Python开发环境(Ubuntu篇)
查看>>
redis安装和配置
查看>>
2016424王启元 Exp5 msf基础应用
查看>>
android + eclipse + 后台静默安装(一看就会)
查看>>
JPA事务总结
查看>>
transitionFromView方法的使用
查看>>
ubuntu nginx+php环境520错误
查看>>
Java中OutOfMemoryError(内存溢出)的三种情况及解决办法
查看>>
windows 10 无法使用内置管理员账户打开应用的解决方案
查看>>
php入门变量
查看>>
wince(2.3)获取位图某一点的RGB值
查看>>
【转】C#中如何实现左截取和右截取字符串
查看>>
代码整洁之道
查看>>
HDU3657 Game(最小割)
查看>>