- 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分别就就是当前屏幕离图片的边界的距离
// 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()会缩放图片让图片充满整个ImageView的边框,然后裁掉超出的部分。ImageVIew会被完全填充满,但是图片可能不能完全显示出。
fitCenter()会缩放图片让两边都相等或小于ImageView的所需求的边框。图片会被完整显示,可能不能完全填充整个ImageView。 - Glide获得加载到imageview图片大小的方法(此时图片的大小只是压缩后的大小,并不是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高度时仍会有168大小的ActionBar高度
问题:
- drawable和bitmap有什么区别?
- glide getsize获得压缩后的图片是根据imageview压缩的,但摄像头横屏竖屏照片比不同,此时用glide加载出的照片大小其实是相同的,怎么帮?
答:这时候就不能用glide去加载图片,应该自己按图片大小,根据比例进行压缩加载
实习项目:
- 缩放功能:对空白部分缩放不能回归中心