ImageView是一個顯示圖片的組件,用一個例子介紹該組件的簡單運用:
在樣式文件中:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:Android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
- <!-- android:src設置ImageView所顯示的Drawable對象的ID -->
- <ImageView
- android:id="@+id/img1"
- android:layout_width="fill_parent"
- android:layout_height="300dp"
- android:background="#cccccc"
- android:src="@drawable/pig" />
- <!--android:scaleType設置所顯示的圖片如何縮放或移動以適應ImageView的大小 其值在中文API上有詳細的說明 -->
- <ImageView
- android:id="@+id/img2"
- android:layout_width="100dp"
- android:layout_height="100dp"
- android:background="#cccccc"
- android:scaleType="fitStart"
- android:layout_marginTop="20dp"
- />
-
- </LinearLayout>
該樣式文件中有兩個ImageView組件,第一個用來顯示我們想要展示的圖片,第二ImageView用來顯示當點擊圖片上某一位置時在該組件上顯示部分圖片,代碼實現該功能:
- package cn.class3g.activity;
-
- import android.app.Activity;
- import android.graphics.Bitmap;
- import android.graphics.drawable.BitmapDrawable;
- import android.os.Bundle;
- import android.view.MotionEvent;
- import android.view.View;
- import android.view.View.OnTouchListener;
- import android.widget.ImageView;
-
- public class ImageViewDemo extends Activity implements OnTouchListener {
- ImageView imageView1, imageView2;
-
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- this.setContentView(R.layout.imageview_layout);
- findViews();
- }
-
- private void findViews() {
- imageView1 = (ImageView) findViewById(R.id.img1);
- imageView2 = (ImageView) findViewById(R.id.img2);
- //為imageView添加觸摸監聽事件
- imageView1.setOnTouchListener(this);
- }
-
- public boolean onTouch(View v, MotionEvent event) {
- float scale = 412 / 320;
- //獲取需要顯示的圖片的開始點
- int x = (int) (event.getX() * scale);
- int y = (int) (event.getY() * scale);
-
- //需要考慮邊界問題
- int width = (int) (100 * scale);
- int height = (int) (100 * scale);
- //獲取圖片顯示框中的位圖
- BitmapDrawable bitmapDrawable = (BitmapDrawable) imageView1.getDrawable();
- //顯示圖片指定的區域
- imageView2.setImageBitmap(Bitmap.createBitmap(bitmapDrawable.getBitmap(),
- x,y, width, height));
-
- return false;
- }
- }
在模擬器上的效果為