ImageView继承自View组件,ImageView还派生了ImageButton、ZoomButton等组件
Image支持的XML属性如下:
android:adjustViewBounds
|
|
是否调整自己的边界来保持所显示图片的长宽比
|
android:cropToPadding
|
|
若属性设为true,该组件将会被裁剪到保留该ImageView的padding
|
android:maxHeight
|
|
设置ImageView的最大高度
|
android:maxWidth |
|
|
android:scaleType
|
|
设置所显示的图片如何缩放或移动以适应ImageView的大小
|
android:src
|
|
设置ImageView所显示的Drawable对象的ID
|
android:scaleType属性可指定如下属性值:
matrix
fitXY
fitStart
fitCenter
fitEnd
center
centerCrop
centerInside
为控制ImageView显示的图片,ImageView提供了如下方法:
setImageBitmap(Bitmap bm)
setImageDrawable(Drawable drawable)
setImageResource(int resId)
setImageURI(Uri uri)
oops 陷阱:
R.drawable.xxxxx(此处xxx不可为1,2,3,4等数字,否则会导致Build失败)
图片显示示例程序代码:
public
class
MainActivity
extends
ActionBarActivity {
int [] images = new int []{
R.drawable. pic1 ,
R.drawable. pic2 ,
R.drawable. pic3 ,
R.drawable. pic4 ,
R.drawable. pic5
};
int currentImg = 2;
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. plus );
final Button minus = (Button) findViewById(R.id. minus );
final ImageView image1 = (ImageView) findViewById(R.id. image1 );
final ImageView image2 = (ImageView) findViewById(R.id. image2 );
final Button next = (Button) findViewById(R.id. next );
final Button last = (Button) findViewById(R.id. last );
next.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View v)
{
image1.setImageResource(
images [++ currentImg % images . length ]);
}
});
last.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View v)
{
if ( currentImg == 0)
{
currentImg = images . length ;
}
image1.setImageResource(
images [-- currentImg ]);
}
});
//change alpha
OnClickListener listener = new OnClickListener()
{
@Override
public void onClick(View v)
{
if (v == plus)
{
alpha += 20;
}
if (v == minus)
{
alpha -= 20;
}
if ( alpha >= 255)
{
alpha = 255;
}
if ( alpha <= 0)
{
alpha = 0;
}
image1.setAlpha(
alpha
);
}
};
plus.setOnClickListener(listener);
minus.setOnClickListener(listener);
image1.setOnTouchListener( new OnTouchListener()
{
@Override
public boolean onTouch(View view, MotionEvent event)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) image1.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
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;
}
image2.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120));
image2.setAlpha(
alpha
);
return false ;
}
int [] images = new int []{
R.drawable. pic1 ,
R.drawable. pic2 ,
R.drawable. pic3 ,
R.drawable. pic4 ,
R.drawable. pic5
};
int currentImg = 2;
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. plus );
final Button minus = (Button) findViewById(R.id. minus );
final ImageView image1 = (ImageView) findViewById(R.id. image1 );
final ImageView image2 = (ImageView) findViewById(R.id. image2 );
final Button next = (Button) findViewById(R.id. next );
final Button last = (Button) findViewById(R.id. last );
next.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View v)
{
image1.setImageResource(
images [++ currentImg % images . length ]);
}
});
last.setOnClickListener( new OnClickListener()
{
@Override
public void onClick(View v)
{
if ( currentImg == 0)
{
currentImg = images . length ;
}
image1.setImageResource(
images [-- currentImg ]);
}
});
//change alpha
OnClickListener listener = new OnClickListener()
{
@Override
public void onClick(View v)
{
if (v == plus)
{
alpha += 20;
}
if (v == minus)
{
alpha -= 20;
}
if ( alpha >= 255)
{
alpha = 255;
}
if ( alpha <= 0)
{
alpha = 0;
}
image1.
}
};
plus.setOnClickListener(listener);
minus.setOnClickListener(listener);
image1.setOnTouchListener( new OnTouchListener()
{
@Override
public boolean onTouch(View view, MotionEvent event)
{
BitmapDrawable bitmapDrawable = (BitmapDrawable) image1.getDrawable();
Bitmap bitmap = bitmapDrawable.getBitmap();
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;
}
image2.setImageBitmap(Bitmap.createBitmap(bitmap,x,y,120,120));
image2.
return false ;
}
});
}
}
ImageView 派生了如下两个子类:
ImageButton:imageButton上显示图片
QuickContactBadge
ImageButton派生了一个ZoomButton,为ZoomButton的android:src属性分别指定btn_minus、btn_plus,即可实现“放大”、“缩小”按钮
QuickContactBadge继承了ImageView,它的本质也是图片,android:src属性可设为显示图片,该图片可以关联到联系人,
assignContactFromEmail(String emailAddress, boolean lazyLookup)
assignContactFromPhone(String phoneNumber, boolean lazyLookup)
assignContactUri(Uri contactUri)
关联联系人程序代码如下:
xml文件
<
LinearLayout
xmlns:android
=
"http://schemas.android.com/apk/res/android"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
xmlns:tools = "http://schemas.android.com/tools"
android:layout_width = "match_parent"
android:layout_height = "match_parent"
>
< QuickContactBadge
android:id = "@+id/badge"
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:src = "@drawable/ic_launcher"
/>
< TextView
android:layout_width = "match_parent"
android:layout_height = "wrap_content"
android:text = "My icon"
android:textSize = "16dp"
/>
</
LinearLayout
>
Java程序:
public
class
MainActivity
extends
ActionBarActivity {
QuickContactBadge badge ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
badge = (QuickContactBadge) findViewById(R.id. badge );
badge .assignContactFromPhone( "15926563025" , false );
}
QuickContactBadge badge ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super .onCreate(savedInstanceState);
setContentView(R.layout. activity_main );
badge = (QuickContactBadge) findViewById(R.id. badge );
badge .assignContactFromPhone( "15926563025" , false );
}