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