編輯:關於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
讓圖片根據固定的寬度進行自適應
需求:自定義一個ViewGroup,實現可以下拉刷新的功能。下拉一定距離後(下拉時顯示的界面可以自定義任何復雜的界面)釋放手指可以回調刷新的功能,用戶處理完刷新的內容後,
今天偶遇以github上gesturelock關於手勢鎖的一個例子(有興趣的去搜索下看看),於是下載下來研究,無奈基本沒有注釋,代碼上存在一些問題(當設置gravity=
Android安全加密專題文章索引 Android安全加密:對稱加密 Android安全加密:非對稱加密 Android安全加密:消息摘要Message D
動態圖現今已經成為各位機友們發朋友圈和說說必不可少的神器,但是作為手機黨要做動態圖就得費上不少時間和功夫了。那麼魅族pro6怎麼制作GIF動態圖呢?下面咱們