日常积累2

2018-12-14  本文已影响6人  niknowzcd

Android里如何让DialogFragment的宽度顶满屏幕?

在dialogFragment中的onstart()方法调用以下代码

@Override
public void onStart() {
    super.onStart();
    Window window = getDialog().getWindow();
    if (window != null) {
        getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
        DisplayMetrics dm = new DisplayMetrics();
        getActivity().getWindowManager().getDefaultDisplay().getMetrics(dm);
        WindowManager.LayoutParams params = getDialog().getWindow().getAttributes();
        params.gravity = Gravity.CENTER;
        getDialog().getWindow().setAttributes(params);
        getDialog().getWindow().setLayout(dm.widthPixels, getDialog().getWindow().getAttributes().height);
    }
}

多个字符串拼接,合理的写法

String[] values=new String[]{"1","2","3"};
    String result=new StringBuilder();
    for(int i=0;i<values.length;i++){
    result.append(values[i]);
}
而不是
String[] values=new String[]{"1","2","3"};
    String result="";
    for(int i=0;i<values.length;i++){
    result+=values[i];          
}

//如果不显示声明StringBuilder,就会在for循环中隐式声明StringBuilder,每一次循环都会new StringBuilder,浪费内存
//字符串拼接的原理就是StringBuilder.append();

单例模式的标准写法

public class Singleton {

    private volatile static Singleton instance;

    private Singleton(){}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}

或者 内部类实现方式

public class Singleton {
    /**
     * 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例没有绑定关系,
     * 而且只有被调用到才会装载,从而实现了延迟加载
     */
    private static class SingletonHolder {
        /**
         * 静态初始化器,由JVM来保证线程安全
         */
        private static final Singleton instance = new Singleton();
    }

    /**
     * 私有化构造方法
     */
    private Singleton() {
    }

    public static Singleton getInstance() {
        return SingletonHolder.instance;
    }
}
上一篇 下一篇

猜你喜欢

热点阅读