美文网首页
Android开发的一些记录

Android开发的一些记录

作者: 让我爱胡蝶 | 来源:发表于2017-06-27 18:10 被阅读48次

    概览

    • FileObserver同一路径最后一次生效
    • 修改Activity透明度
    • 检查包名是否存在
    • 对URL进行编码
    • View测量的默认处理
    • 手势监听时,onFling没有回调。设置View.setLongClickable(true)
    • Kotlin常用包Anko;compile "org.jetbrains.anko:anko-sdk15:+"

    • FileObserver对同一个文件的监听,只有最后一次监听能收到onEvent.

    • 弹出PopWindow时想修改底层透明度(底层半透明的效果),可以使用以下方法
          /**
         * 设置添加屏幕的背景透明度
         *
         * @param pContext 上下文
         * @param bgAlpha  透明度 popwindow.show的时候backgroundAlpha(0.5f);popwindow.setOnDismissListener的时候backgroundAlpha(1f);
         * @return true修改成功false修改失败
         */
        public static boolean backgroundAlpha(Context pContext, float bgAlpha) {
            if (pContext instanceof Activity) {
                WindowManager.LayoutParams lp = ((Activity) pContext).getWindow().getAttributes();
                lp.alpha = bgAlpha; //0.0-1.0
                ((Activity) pContext).getWindow().setAttributes(lp);
                return true;
            } else {
                return false;
            }
        }
      

    • 查询应用是否存在:可能会有这种情况AppliactionInfo!=null但是PackageInfo==null。
        /**
         * 根据包名判断应用是否已经安装。
         *
         * @param context     上下文
         * @param packageName 包名
         * @return 如果应用已经安装,则返回true,否则返回false.
         */
        public static boolean isPackageExist(Context context, String packageName) {
            boolean isExist = false;
            try {
                isExist = (null != context.getPackageManager().getApplicationInfo(packageName, PackageManager.GET_UNINSTALLED_PACKAGES))
                        && (null != context.getPackageManager().getPackageInfo(packageName, 0));
            } catch (NameNotFoundException e) {
            } finally {
                return isExist;
            }
        }
    

    • 对URL进入编码

    Android 编码URL中文字符串;
    我能想到的问题:中文字符和空格。重复编码也没问题。

    public static String encodeUrl(String url) {
            return Uri.encode(url, "-![.:/,%?&=]");
        }
    

    • View测量的默认处理
        /***
         * 测量的默认处理
         * 1. EXACTLY返回定值
         * 2. UNSPECIFIED返回默认值
         * 3.AT_MOST返回最小值
         * @param measureSpace 值
         * @param default 默认值
         * @return 大小
         */
        private fun getMeasureSize(measureSpace: Int, default: Int): Int {
            var retuSize = 0
            val model = MeasureSpec.getMode(measureSpace)
            val size = MeasureSpec.getSize(measureSpace)
            when (model) {
                MeasureSpec.UNSPECIFIED -> retuSize = default
                MeasureSpec.AT_MOST -> retuSize = Math.min(default, size)
                MeasureSpec.EXACTLY -> retuSize = size
            }
            return retuSize
        }
    

    • 手势监听时,onFling没有回调。设置View.setLongClickable(true)

    主要问题是滑动一会后,停住不滑动,过一会松手。就会出现onFling不回调。


    • Kotlin常用包Anko

    引用初探Kotlin和anko进行Android开发

    //anko
        compile "org.jetbrains.anko:anko-sdk15:+" // So here it's 15 too
        compile "org.jetbrains.anko:anko-appcompat-v7:+"
        compile "org.jetbrains.anko:anko-design:+"
        compile "org.jetbrains.anko:anko-recyclerview-v7:+"
    
    • BottomSheetDialogFragment
     @NonNull
        @Override
        public Dialog onCreateDialog(Bundle savedInstanceState) {
            BottomSheetDialog dialog = (BottomSheetDialog) super.onCreateDialog(savedInstanceState);
            rootView = View.inflate(getContext(), R.layout.work_comment_fragment, null);
            initView();
            initData();
            dialog.setContentView(rootView, new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, (int) (getContext().getResources().getDisplayMetrics().heightPixels * 0.5)));
            mBehavior = BottomSheetBehavior.from((View) rootView.getParent());
            return dialog;
        }
    

    相关文章

      网友评论

          本文标题:Android开发的一些记录

          本文链接:https://www.haomeiwen.com/subject/erwecxtx.html