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

来源:互联网 发布:大专转行数据分析师 编辑:程序博客网 时间:2024/06/12 15:20
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失败)
图片显示示例程序代码:
publicclassMainActivity extends ActionBarActivity {

int[]images= new int[]{
R.drawable.
pic1,
R.drawable.
pic2,
R.drawable.
pic3,
R.drawable.
pic4,
R.drawable.
pic5
};
intcurrentImg= 2;
privateintalpha= 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(
newOnClickListener()
        {
       
@Override
       
publicvoidonClick(View v)
        {
        image1.setImageResource(
       
images[++currentImg% images.length]);
        }
        });
        last.setOnClickListener(
newOnClickListener()
        {
       
@Override
       
publicvoidonClick(View v)
        {
       
if(currentImg== 0)
        {
       
currentImg= images.length;
        }
        image1.setImageResource(
       
images[--currentImg]);
        }
        });
       
//change alpha

       
        OnClickListener listener =
new OnClickListener()
        {
       
@Override
       
publicvoidonClick(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(
newOnTouchListener()
        {
       
@Override
       
publicbooleanonTouch(View view, MotionEvent event)
        {
        BitmapDrawable bitmapDrawable = (BitmapDrawable) image1.getDrawable();
        Bitmap bitmap = bitmapDrawable.getBitmap();
       
doublescale = bitmap.getWidth()/320.0;
       
intx = (int) (event.getX()*scale);
       
inty = (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);
       
returnfalse;
        }
        });
    }
}

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文件
<LinearLayoutxmlns: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程序:
publicclassMainActivity 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);
    }




















0 0
原创粉丝点击