View
TextView
- 文字阴影效果
1 2 3 4 5 6 7 8 9
< TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:shadowColor="#8000" android:shadowDx="3" android:shadowDy="3" android:shadowRadius="2" android:textColor="#00ff00" tools:text="a man has no name"/>
EditText/TextView
- 限制字符长度
1
android:maxLength="50"
1
et.setFilters(new InputFilter[]{new InputFilter.LengthFilter(50)})
- 软键盘搜索事件
1
imeOptions="actionSearch"
- 限制输入类型为 ip
1 2 3 4 5 6
<!-- xml 布局 --> < EditText android:id="@+id/et_setting_printer_edit_info_ip" ... android:inputType="number" android:digits="0123456789." />
1 2 3 4
// Java 代码 final EditText mEditText = new EditText(context); mEditText.setKeyListener(DigitsKeyListener.getInstance("0123456789.")); mEditText.setInputType(InputType.TYPE_CLASS_NUMBER);
- 文字实现
跑马灯
效果- setEllipsize(TextUtils.TruncatAt.MARQUEE)
- text.setSelected(true)
- 注意:
- EditText 不支持跑马灯效果,如果执行 setEllipsize(TextUtils.TruncatAt.MARQUEE) 会抛出异常 EditText cannot use the ellipsize mode TextUtils.TruncateAt.MARQUEE
- 只有当 text.setSelected(true) 时才有效果
ListView
- 在 TV 开发中可能会遇到 ListView#setSelection(int index) 无效,可尝试以下解决办法
1 2 3 4 5 6 7
private Instrumentation mInst; public void performKeyEvent(int keyCode) { if (mInst == null) { mInst = new Instrumentation(); } mInst.sendKeyDownUpSync(keyCode); }
Bitmap
Drawable
Activity
- 启动 Activity 时,如果添加了 Intent.FLAG_ACTIVITY_NEW_TASK 标记位,startActivityForResult() 之后会立即回调 onActivityResult() 方法
- Android认为不同Task之间的Activity是不能传递数据的
Service
- ServiceConnection#onServiceDisconnected() 方法不会在 Context#unbindServie() 调用后执行,只会在 service 死掉时执行
BroadcastReceiver
Dialog
OpenGL
- OpenGl ES关于渲染方式有以下两种:
1 2 3 4 5
RENDERMODE_CONTINUOUSLY和RENDERMODE_WHEN_DIRTY。 默认渲染方式为RENDERMODE_CONTINUOUSLY,这两种渲染的含义是: RENDERMODE_CONTINUOUSLY:渲染器会不停地渲染场景, RENDERMODE_WHEN_DIRTY:只有在创建和调用requestRender()时才会刷新。 一般设置为RENDERMODE_WHEN_DIRTY方式,这样不会让CPU一直处于高速运转状态,提高手机电池使用时间和软件整体性能。
Android DataBinding 使用
- 布局跟标签必须是 layout
1
2
3
4
< layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools">
< /layout>
Gradle build error
- Program type already present: android.support.v4.app.BackStackRecord$xxx
1
implementation/api/compile 'com.android.support:support-v4:27.1.1'
- Could not find manifest-merger.jar (com.android.tools.build:manifest-merger:26.0.0)
1 2 3
google() // 这个仓库放到最前面试试 jcenter() mavenCentral()
- Error:No such property: GradleVersion for class: JetGradlePlugin
1
androidx -> gradle version 4.10.1
Android Runtime Crash
- java.lang.NoClassDefFoundError:failed resolution of :Lorg/apache/http/
1
< uses-library android:name="org.apache.http.legacy" android:required="false" />
- Unable to add window – token android.os.BinderProxy@1e45a46 is not valid; is your activity running?
1 2 3 4
// 当前 activity 已经关闭,仍然调用了 dialog.show() 方法,通常是由于异步调用 引起的, if (mContext instanceof Activity && !((Activity) mContext).isFinishing()) { dialog.show(); }
- Receiver not registered: BroadcastReceiver 没有注册就调用了 unregister() 方法
利用标记位,判断是否注册/反注册
- java.lang.RuntimeException: android.os.DeadSystemException
1
没解决
- java.lang.UnsupportedOperationException: TextureView doesn’t support displaying a background drawable
1 2 3 4 5 6 7
< TextureView android:id="@+id/mLiveView" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_gravity="center_horizontal"/> <!-- 不能设置 background 属性 --> <!-- android:background="@mipmap/ic_face_verification" -->
Http 状态码
- 200~300:成功
- 302:
- 306:
- 307:
- 400:bad request
是多少
- 401:未认证
- 403:禁止访问
- 413:请求体过大
- 500:服务器内部错误
okhttp:
- CLEARTEXT communication to xxx.xxx.com not permitted by network security policy
1 2 3 4 5 6 7 8 9 10 11 12 13
from: https://blog.csdn.net/qq_18620851/article/details/80617549 问题: 由于 Android P 限制了明文流量的网络请求,非加密的流量请求都会被系统禁止掉。 1: 在 res 下新建一个 xml 目录,然后创建一个名为: network_security_config.xml 文件 ,该文件内容如下: <?xml version="1.0" encoding="utf-8"?> < network-security-config> <base-config cleartextTrafficPermitted="true" /> < /network-security-config> < application ... android:networkSecurityConfig="@xml/network_security_config"> < /application> 2:服务器和本地应用都改用 https (推荐) 3:targetSdkVersion 降级回到 27
Java 相关
- java.util.ConcurrentModificationException
1 2 3 4 5 6 7 8 9 10
// list, vector 在迭代时同步对元素进行修改就会引发此异常 // 1, 单线程下解决方式 Iterator<?> it = list.iterator(); while (it.hasNext()) { T t = it.next(); if (t 满足条件) { it.remove(); } } // 2, 多线程下使用 synchronized 关键字或者 lock,或者使用 CopyOnWriteArrayList