XML属性 | 相关方法 | 说明 | |||||||||||||||||||||||||||
android:adjustViewBounds | setAdjustViewBounds(boolean) | 设置ImageView是否调整自己的边界来保持所显示图片的长宽比 | |||||||||||||||||||||||||||
android:baseline | setBaseline(int) | 视图内基线的偏移量 | |||||||||||||||||||||||||||
android:baselineAlignBottom | setBaselineAlignBottom(boolen) | ture=图像的视图将基线对齐于其底部边缘 | |||||||||||||||||||||||||||
android:cropToPadding | setCropToPadding(boolean) | 如果将该属性设为true,该组件将会被裁剪到保留该ImageView的padding | |||||||||||||||||||||||||||
adnroid:maxheight | setMaxHeight(int) | 设置ImageView的最大高度 为视图提供最大高度的可选参数。(译者注:单独使用无效,需要与setAdjustViewBounds一起使用。如果想设置图片固定大小,又想保持图片宽高比,需要如下设置: |
|||||||||||||||||||||||||||
android:maxWidth | setMaxWidth(int) | 设置ImageView的最大宽度 | |||||||||||||||||||||||||||
android:scaleType | setScaleType(ImageView.ScaleType) | 设置所显示的图片如何缩放或移动以适应ImageView的大小 控制为了使图片适合 ImageView 的大小,应该如何变更图片大小或移动图片。一定是下列常量之一:
|
|||||||||||||||||||||||||||
android:src | setImageResource(int) | 设置ImageView所显示的Drawable对象的ID | |||||||||||||||||||||||||||
android:tint | setColorFilter(int,PorterDuff.Mode) | 设置图像的着色颜色 |
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent"> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center" > <!-- 此处定义三个按钮 --> <Button android:id="@+id/button01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button01" android:textSize="16sp" /> <Button android:id="@+id/button02" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button02" android:textSize="16sp" /> <Button android:id="@+id/button03" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/button03" android:textSize="16sp" /> </LinearLayout> <!-- 定义显示图片整体的ImageView --> <ImageView android:id="@+id/image1" android:layout_width="fill_parent" android:layout_height="240px" android:src="@drawable/one" android:scaleType="fitCenter" /> <!-- 定义显示图片局部细节的 ImageView --> <ImageView android:id="@+id/image2" android:layout_width="120dp" android:layout_height="120dp" android:background="#00f" android:layout_marginTop="100dp" /> </LinearLayout>
package com.example.android_imageview; import android.os.Bundle; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnTouchListener; import android.widget.Button; import android.widget.ImageView; public class MainActivity extends Activity { //定义一个访问图片的数组 int[] images = new int[] { R.drawable.one, R.drawable.car, R.drawable.weixin }; //定义默认显示的图片 int currentImg = 0; //定义图片的初始透明度 private int alpha = 255; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //获取增大透明度按钮对象 final Button plus = (Button) findViewById(R.id.button01); //获取降低透明度按钮对象 final Button minus = (Button) findViewById(R.id.button02); //获取下一张按钮对象 final Button next = (Button) findViewById(R.id.button03); final ImageView image1 = (ImageView) findViewById(R.id.image1); final ImageView image2 = (ImageView) findViewById(R.id.image2); //定义查看下一张图片的监听器 next.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub //控制ImageView显示下一张 image1.setImageResource(images[++currentImg % images.length]); } }); //定义改变图片透明度的方法 OnClickListener listener = new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub if(v == plus){ alpha +=20; } if(v == minus){ alpha -=20; } alpha = alpha>255 ? 255 :alpha; alpha = alpha<=0 ? 0 : alpha; //改变图片的透明度 image1.setAlpha(alpha); } }; //为增加透明度按钮添加监听事件 plus.setOnClickListener(listener); //为降低透明度按钮添加监听事件 minus.setOnClickListener(listener); /** * Android的手势识别 * 为image1设置触摸监听器 */ image1.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { // TODO Auto-generated method stub /** * 使用BitmapDrawable解析图片 */ BitmapDrawable bitmapDrawable = (BitmapDrawable) image1.getDrawable(); //获取第一个图片显示框中的位置(得到Bitmap) Bitmap bitmap = bitmapDrawable.getBitmap(); //bitmap 图片实际大小与第一个ImageView的缩放比例 double scale = bitmap.getWidth() / 320.0; //获取需要显示的图片的开始点 int x = (int) (event.getX() * scale); int y = (int) (event.getY() * scale); if(x + 120 > bitmap.getWidth()) { x = bitmap.getWidth() - 120; } if(y + 120 > bitmap.getHeight()) { y = bitmap.getHeight() - 120; } //显示图片的指定区域 //setImageBitmap()方法其实是调用了setImageDrawable()方法进行重绘。 image2.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120)); image2.setAlpha(alpha); //return false说明你还没消费onTouch事件,在执行完你onTouch里面的代码之后,onTouch事件并没有结束 return false; } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }