实习笔记17.07.27

  1. 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()将图片的宽高加到矩形上
  2. 获取屏幕宽高的方法:
 DisplayMetrics dm = new DisplayMetrics();
 getWindowManager().getDefaultDisplay().getMetrics(dm); //获取屏幕分辨率
 screenWidth = dm.widthPixels;  //屏幕宽度
 screenHeight = dm.heightPixels;  //屏幕高度
  1. 获取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());
 }
  1. BitmapFactory.decodeFile(mPendingPhoto.getPath());
    mBitmap.getWidth()
    得到的width是原始图片的width(像素)
  2. Glide:
    CenterCrop()会缩放图片让图片充满整个ImageView的边框,然后裁掉超出的部分。ImageVIew会被完全填充满,但是图片可能不能完全显示出。
    fitCenter()会缩放图片让两边都相等或小于ImageView的所需求的边框。图片会被完整显示,可能不能完全填充整个ImageView。
  3. 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);
            }
        });
  1. Android在使用Theme.AppCompat.Light.NoActionBar主题后,获取actionbar高度时仍会有168大小的ActionBar高度

问题:

  1. drawable和bitmap有什么区别?
  2. glide getsize获得压缩后的图片是根据imageview压缩的,但摄像头横屏竖屏照片比不同,此时用glide加载出的照片大小其实是相同的,怎么帮?
    答:这时候就不能用glide去加载图片,应该自己按图片大小,根据比例进行压缩加载

实习项目:

  1. 缩放功能:对空白部分缩放不能回归中心

推荐阅读更多精彩内容