Android常用的小Tips
软键盘的tips
不让软键盘改变布局
常用的,在配置清单文件(AndroidManifest.xml)的对应activity下加入android:windowSoftInputMode="adjustPan|stateHidden"
<activity
android:name=".activity.GunActivity"
android:windowSoftInputMode="adjustPan|stateHidden">
</activity>
Enter键变为搜索字样
在对应的Edittext控件下增加一个属性android:imeOptions="actionSearch"
,也可以在代码里面设置mEditText.setImeOptions(3);
,关于imeOptions的其他参数,,
需要特别注意的是,该属性生效必须设置android:singleLine="true"
,尽管该属性已经过时!!!
Constant | Value | 描述 |
---|---|---|
actionDown | 6 | 完成 |
actionGo | 2 | Go |
actionNext | 5 | 下一步 |
actionNone | 1 | None |
actionPrevious | 7 | 上一步 |
actionSearch | 3 | 搜索 |
actionSend | 4 | 发送 |
actionUnspecified | 0 | None |
flagForceAscii | 80000000 | 强制输入ASCII |
flagNavigateNext | 8000000 | 导航到下一步 |
flagNavigatePrevious | 4000000 | 导航到上一步 |
flagNoAccessoryAction | 20000000 | 该次输入事件优先级最高 |
flagNoEnterAction | 40000000 | enter键不可用 |
flagNoExtractUi | 10000000 | 尽可能不占用屏幕 |
flagNoFullscreen | 2000000 | 输入法不会全屏 |
flagNoPersonalizedLearning | 1000000 | 输入法不会记住输入历史 |
normal | 0 | 普通 |
然后在代码里面相应该事件,为Edittext设置按键监听setOnKeyListener
mEditText.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View view, int i, KeyEvent keyEvent) {
if (i == KeyEvent.KEYCODE_ENTER) {
// 先隐藏键盘
((InputMethodManager) getSystemService(INPUT_METHOD_SERVICE))
.hideSoftInputFromWindow(SearchContactsActivity.this.getCurrentFocus()
.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
search();//进行搜索的操作
return true;
}
return false;
}
});
透明背景Activity设置方式
在Activity的主题里面,添加上
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
ex:
<style name="DialogTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@color/transparent</item>
<item name="android:windowIsTranslucent">true</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Translucent</item>
</style>
然后在配置清单文件里面应用该主题
<activity
android:name=".activity.GroupCreateActivity"
android:screenOrientation="portrait"
android:theme="@style/DialogTheme"
android:windowSoftInputMode="adjustNothing|stateHidden">
</activity>
检查是否获得悬浮框权限
这里通过反射来检查,因为国产ROM将这一权限给加入了控制模块。
/**
* 判断 悬浮窗口权限是否打开
* @param context
* @return true 允许 false禁止
*/
public boolean checkAlertWindowsPermission(Context context) {
try {
Object object = context.getSystemService(Context.APP_OPS_SERVICE);
if (object == null) {
return false;
}
Class localClass = object.getClass();
Class[] arrayOfClass = new Class[3];
arrayOfClass[0] = Integer.TYPE;
arrayOfClass[1] = Integer.TYPE;
arrayOfClass[2] = String.class;
Method method = localClass.getMethod("checkOp", arrayOfClass);
if (method == null) {
return false;
}
Object[] arrayOfObject1 = new Object[3];
arrayOfObject1[0] = 24;
arrayOfObject1[1] = Binder.getCallingUid();
arrayOfObject1[2] = context.getPackageName();
int m = ((Integer) method.invoke(object, arrayOfObject1));
return m == AppOpsManager.MODE_ALLOWED;
} catch (Exception ex) {
}
return false;
}