安卓学习-界面-ui-ImageView

属性

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 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2     android:layout_width="fill_parent"
 3     android:layout_height="fill_parent"
 4     android:orientation="vertical" >
 5 
 6     <TableLayout
 7         android:layout_width="match_parent"
 8         android:layout_height="wrap_content"
 9         android:layout_weight="1" >
10 
11         <TableRow
12             android:id="@+id/tableRow1"
13             android:layout_width="wrap_content"
14             android:layout_height="wrap_content" >
15 
16             <Button
17                 android:id="@+id/button1"
18                 android:layout_width="wrap_content"
19                 android:layout_height="wrap_content"
20                 android:text="增加透明" />
21 
22             <Button
23                 android:id="@+id/button2"
24                 android:layout_width="wrap_content"
25                 android:layout_height="wrap_content"
26                 android:text="减少透明" />
27 
28             <Button
29                 android:id="@+id/button3"
30                 android:layout_width="wrap_content"
31                 android:layout_height="wrap_content"
32                 android:text="下一张" />
33 
34         </TableRow>
35 
36        
37 
38         <LinearLayout
39             android:layout_width="match_parent"
40             android:layout_height="match_parent"
41             android:orientation="vertical" >
42 
43             <RelativeLayout
44                 android:layout_width="match_parent"
45                 android:layout_height="wrap_content" 
46                 android:layout_weight="1"
47                 >
48 
49                 <com.example.f.MyImageView
50                     android:id="@+id/imageView1"
51                     android:layout_width="match_parent"
52                     android:layout_height="match_parent" 
53                     android:padding="5dp"
54                     />
55 
56             </RelativeLayout>
57 
58             <RelativeLayout
59                 android:layout_width="match_parent"
60                 android:layout_height="wrap_content"
61                  android:layout_weight="1"
62                  >
63 
64                 <ImageView
65                     android:id="@+id/imageView2"
66                     android:layout_width="match_parent"
67                     android:layout_height="match_parent"
68                     android:padding="5dp"
69                      />
70             </RelativeLayout>
71 
72         </LinearLayout>
73 
74     </TableLayout>
75 
76 </LinearLayout>
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     @Override
15     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     @Override
26     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             @Override
42             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             @Override
54             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