- m.mapRect(rectf),韧掩,將RectF的值映射到matrix中
常用情況:
RectF rect = new RectF(0, 0, bitmap.getWidth(), bitmap.getHeight());
matrix.mapRect(rect);
//這樣rect.left肉盹,rect.right,rect.top,rect.bottom分別就就是當(dāng)前屏幕離圖片的邊界的距離
// bitmap.getWidth() 和 bitmap.getHeight()將圖片的寬高加到矩形上 - 獲取屏幕寬高的方法:
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm); //獲取屏幕分辨率
screenWidth = dm.widthPixels; //屏幕寬度
screenHeight = dm.heightPixels; //屏幕高度
- 獲取ActionBar的高度
//獲取ActionBar的高度
int actionBarHeight = 0;
TypedValue tv = new TypedValue();
if (context.getTheme().resolveAttribute(android.R.attr.actionBarSize, tv, true)) {
actionBarHeight = TypedValue.complexToDimensionPixelSize(tv.data, context.getResources().getDisplayMetrics());
}
- BitmapFactory.decodeFile(mPendingPhoto.getPath());
mBitmap.getWidth()
得到的width是原始圖片的width(像素) - Glide:
CenterCrop()會(huì)縮放圖片讓圖片充滿整個(gè)ImageView的邊框,然后裁掉超出的部分慈格。ImageVIew會(huì)被完全填充滿,但是圖片可能不能完全顯示出。
fitCenter()會(huì)縮放圖片讓兩邊都相等或小于ImageView的所需求的邊框漾根。圖片會(huì)被完整顯示厚宰,可能不能完全填充整個(gè)ImageView腌巾。 - Glide獲得加載到imageview圖片大小的方法(此時(shí)圖片的大小只是壓縮后的大小,并不是fitcenter和centercrop裁剪后的大小。二者操作后getsize的大小相等):
Glide.with(this).load(Uri.fromFile(new File(mPendingPhoto.getPath()))).fitCenter().into(mPendingPhotoIv).getSize(new SizeReadyCallback() {
@Override
public void onSizeReady(int width, int height) {
Log.d(TAG, "onSizeReady: width" + width);
Log.d(TAG, "onSizeReady: height" + height);
}
});
- Android在使用Theme.AppCompat.Light.NoActionBar主題后壤躲,獲取actionbar高度時(shí)仍會(huì)有168大小的ActionBar高度
問(wèn)題:
- drawable和bitmap有什么區(qū)別城菊?
- glide getsize獲得壓縮后的圖片是根據(jù)imageview壓縮的,但攝像頭橫屏豎屏照片比不同碉克,此時(shí)用glide加載出的照片大小其實(shí)是相同的凌唬,怎么幫?
答:這時(shí)候就不能用glide去加載圖片漏麦,應(yīng)該自己按圖片大小客税,根據(jù)比例進(jìn)行壓縮加載
實(shí)習(xí)項(xiàng)目:
- 縮放功能:對(duì)空白部分縮放不能回歸中心