Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android中的ImageView

Android中的ImageView

編輯:關於Android編程

1、設置圖片
(1)靜態設置

    

(2)動態設置

    // 從項目的資源中設置圖片
    private void setFromResource() {
        imageView.setImageResource(R.drawable.lenna);
    }

    // 設置drawable。此處直接從資源中獲取一個圖片drawable。
    private void setByDrawable() {
        Drawable drawable = getDrawable(R.drawable.lenna);
        imageView.setImageDrawable(drawable);
    }

    // 從外置存儲卡設置圖片。此處為了代碼演示簡潔,直接硬編碼了文件路徑。
    // 注意:在實際項目中,切記不可如此,某些手機可能不存在外置卡。
    // 此處應使用 Environment.getExternalStorageDirectory().getPath()
    private void setFromPath() {
        Uri uri = Uri.fromFile(new File("/mnt/sdcard/cudgel.png"));
        imageView.setImageURI(uri);
    }

    // 從相冊中加載圖片。獲取content的uri示例代碼如下:
    // Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
    // intent.setType("image/*");
    // startActivityForResult(intent, 0);
    // 然後在onActivityResult中從data中獲取即可(data.getData())
    private void setFromAlbum() {
        String content = "content://media/external/images/media/32";
        Uri uri = Uri.parse(content);
        imageView.setImageURI(uri);
    }

    // 用Bitmap設置圖片。bitmap更多內容請見下一節內容。
    private void setFromBitmap() {
        Bitmap bm = BitmapFactory.decodeFile("/sdcard/cudgel.png");
        imageView.setImageBitmap(bm);
    }

2、src與background區別
background會根據ImageView組件給定的長寬進行拉伸,而src就存放的是原圖的大小,居中顯示,不會進行拉伸。src是圖片內容(前景),bg是背景,可以同時使用。

3、ScaleType的屬性

注:
(1)centercrop:保持圖片的長寬比,全部顯示。
(2)center與centerinside的區別,在於,centerinside有時會根據情況拉伸,center的圖片不會做任何拉伸。

4、Matrix

(1)圖片放大

        imageView.setScaleType(ImageView.ScaleType.MATRIX);
        Matrix matrix = new Matrix();
        float scale = scale(imageView);
        matrix.setScale(scale, scale);
        imageView.setImageMatrix(matrix);

(2)圖片旋轉

        imageView.setScaleType(ImageView.ScaleType.MATRIX);
        int viewWidth = imageView.getWidth();
        int viewHeight = imageView.getHeight();
        Matrix matrix = new Matrix();
        matrix.setRotate(45, viewWidth / 2, viewHeight / 2);
        imageView.setImageMatrix(matrix);

(3)圖片先放大再旋轉

imageView.setScaleType(ImageView.ScaleType.MATRIX);
        int viewWidth = imageView.getWidth();
        int viewHeight = imageView.getHeight();
        //先放大
        Matrix translate = new Matrix();
        float scale = scale(imageView);
        translate.setScale(scale, scale);
        //再旋轉
        Matrix rotate = new Matrix();
        rotate.setRotate(45, viewWidth / 2, viewHeight / 2);
        //將兩個Matrix串聯起來,也可以使用setConcat
        rotate.postConcat(translate);
        imageView.setImageMatrix(rotate);

(4)先放大再旋轉最後平移

        imageView.setScaleType(ImageView.ScaleType.MATRIX);
        int viewWidth = imageView.getWidth();
        int viewHeight = imageView.getHeight();
        //先放大
        Matrix scale = new Matrix();
        float ratio = scale(imageView);
        //再旋轉
        scale.setScale(ratio, ratio);
        Matrix rotate = new Matrix();
        rotate.setRotate(45, viewWidth / 2, viewHeight / 2);
        //將放大旋轉連接起來
        rotate.postConcat(scale);
        //最後平移
        Matrix translate = new Matrix();
        translate.setTranslate(100, -100);
        //將三個連接起來
        rotate.postConcat(translate);

        imageView.setImageMatrix(rotate);

5、給圖片著色
Tint
示例代碼

    
    

6、adjustViewBounds
讓圖片根據固定的寬度進行自適應

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved