实习笔记17.07.28

  1. androidstudio快捷键: Ctrl+N 查找className
  2. Adapter中用不了getWindowManager()方法怎么办?
    答:
    Android获取屏幕大小宽度的方法有好多种,
    除了getWindowManager以外
// 通过WindowManager获取
DisplayMetrics dm =newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
System.out.println("heigth : " + dm.heightPixels);
System.out.println("width : " + dm.widthPixels);

还有好多种

// 通过Resources获取
DisplayMetrics dm2 = getResources().getDisplayMetrics();
System.out.println("heigth2 : " + dm2.heightPixels);
System.out.println("width2 : " + dm2.widthPixels);// 获取屏幕的默认分辨率
Display display = getWindowManager().getDefaultDisplay();
System.out.println("width-display :" + display.getWidth());
System.out.println("heigth-display :" + display.getHeight());

但是为什么Activity中就可以用getWindowManager,Adapter中不可以呢?
因为getWindowManager()这个方法是在类Activity中的,如果你自己编写的类不是继承于类Activity,那么必然在这个类中书写代码就不能用到getWindowManager()这个方法。所以当你自己编写的类不是继承于类Activity,那么就只能应用第二种方法通过Resources获取获取手机屏幕的大小。

  1. 自定义控件XML文件出现错误??
    答:(1)在as中无法预览
    在自定义view的构造函数中添加
if (isInEditMode()) { return; }

(2)setContentView(xxx)中 inflate布局文件出现错误
这是因为我在自定义view的构造函数中有误
自定义view的三个构造函数都要重写,最好一个或两个参数的构造函数调用this()转到第三个构造函数中

 public DermabrasionImageView(Context context) {
        this(context, null);
    }


    public DermabrasionImageView(Context context, AttributeSet attrs) {
        this(context, attrs, 0);
    }

    public DermabrasionImageView(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        //  if (isInEditMode()) { return; }
        mContext = context;
        init();
    }
  1. Bitmap一类型
  1. AndroidStudio 2.1.2 instantApp 有时候重新设置资源文件(比如显示一张图片)会显示不出来,这时候卸载app重新启动就好
  2. 图片压缩工具类

BitmapFactory.Options newOpts = new BitmapFactory.Options();
// 开始读入图片,此时把options.inJustDecodeBounds 设回true,即只读边不读内容
newOpts.inJustDecodeBounds = true;
newOpts.inPreferredConfig = Bitmap.Config.RGB_565;
// Get bitmap info, but notice that bitmap is null now
Bitmap bitmap = BitmapFactory.decodeFile(imgPath, newOpts);
为什么??
答:inJustDecodeBounds为true,只读边界,所以bitmap为null

  1. point和pointF有什么区别?

【项目自查】

  1. 照片压缩显示要考虑不同图片大小压缩比例不同

推荐阅读更多精彩内容