zoukankan      html  css  js  c++  java
  • 安卓学习-界面-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
  • 相关阅读:
    正则表达式(二):Unicode诸问题(上)
    ANT Notes
    Linux下OpenGL开发 -- 准备篇 (转)
    两个和尚
    Office 2008 for Mac 安装笔记
    从软件工程师到IT猎头:我的一点经历和感触 (转)
    One splitpath implementation (platform independent)
    ANT的使用(转)
    80后中专毕业奋斗10年 我的理财选择
    用ANT来实现邮件发送
  • 原文地址:https://www.cnblogs.com/weijj/p/3949401.html
Copyright © 2011-2022 走看看