android:id="@android:id/empty"
与ListView配合使用,当ListView中没有数据时,显示id为empty的组件。当然对RecyclerView也是适用的。
使用TextPaint而不是Paint绘制文本
设置View的显示范围
view.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);复制代码
RecyclerView.notifyItemChanged()
view.setTranslationZ(-1); //让组件位于其他组件下边
将View裁剪为圆形等(API >= 21)
view.setOutlineProvider(new ViewOutlineProvider() { @Override public void getOutline(View view, Outline outline) { outline.setOval(view.getPaddingLeft(), view.getPaddingTop(), view.getWidth() - view.getPaddingRight(), view.getHeight() - view.getPaddingBottom()); } });setClipToOutline(true);复制代码
String的格式化
¥%.2f/%s android:text="@{@string/price_symbol_formatted_string(goods.price,goods.unit)}"%s% 好评 ]]> 复制代码
上述代码从上到下结果示例: ¥94.24/kg 96% 好评
SpannableString
ClickableSpan:具有点击时间的文本效果 MaskFilterSpan:如模糊效果(BlurMaskFilter),浮雕效果(EmbossMaskFilter) RasterizerSpan:光栅效果 DynamicDrawableSpan:设置图片,基于文本baseline或bottom对齐 SubscriptSpan:下标 SuperscriptSpan:上标 UrlSpan:文本超链接 AlignmentSpan:对齐方式 TypefaceSpan:字体 StyleSpan:字体样式,例如对文本加粗、斜体等 AbsoluteSizeSpan:字体绝对大小 RelativeSizeSpan:字体相对大小 BackgroundColorSpan:背景色 ForegroundColorSpan:前景色 TextAppearanceSpan:文本外貌,包括字体、样式、大小、颜色等
e.g.
String base = "北京到湖南的";String append = "[路线]";String com = base + append;SpannableString ss = new SpannableString(com);ss.setSpan(new ClickableSpan() { @Override public void onClick(View widget) { Toast.makeText(MainActivity.this, "路线", Toast.LENGTH_LONG).show(); } @Override public void updateDrawState(TextPaint ds) { super.updateDrawState(ds); }}, base.length(), com.length(),Spanned.SPAN_INCLUSIVE_EXCLUSIVE);TextView textView = (TextView) findViewById(R.id.text);//必须设置MovementMethodtextView.setMovementMethod(LinkMovementMethod.getInstance());textView.setText(ss);复制代码
处理Markdown
使用StrictMode来检测内存泄漏
//add follow codes in your Application#onCreate()StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();//android 2.3添加StrickMode之后只能监测到数据库是否关闭builder.detectLeakedSqLiteObjects();//在android 3.0之后,可以监测Activity泄漏,对象泄漏,对象未关闭泄漏if (VERSION.SDK_INIT >= Build.VERSION_CODES.HONEYCOMB){ builder.detectActivityLeaks().detectLeakedClosableObjects();}复制代码
屏幕旋转失效
与主题冲突:
android:windowIsTranslucent="true"复制代码
InputMethodManager导致内存泄露
https://gist.github.com/pyricau/4df64341cc978a7de414