Android开发的一些记录
2017-06-27 本文已影响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
//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;
}