概覽
- 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;
}