Android界面编程之四 第三组UI组件:ImageView及其子类

本文详细介绍了Android中ImageView组件的功能和使用方法,包括其属性、派生组件如ImageButton和QuickContactBadge,以及通过示例代码展示如何操作图片资源。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 ;
        }
        });
    }
}

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"
     >

   
< 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 );
    }




















评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值