大道之行,天下为公。这篇文章主要讲述Android实用代码相关的知识,希望能为你提供帮助。
1、展开、收起状态栏
文章图片
public static final void collapseStatusBar(Context ctx) {
Object sbservice = ctx.getSystemService("statusbar");
try {
Class< ?> statusBarManager = Class.forName("android.app.StatusBarManager");
Method collapse;
if (Build.VERSION.SDK_INT > = Build.VERSION_CODES.JELLY_BEAN_MR1) {
collapse = statusBarManager.getMethod("collapsePanels");
} else {
collapse = statusBarManager.getMethod("collapse");
}
collapse.invoke(sbservice);
} catch (Exception e) {
e.printStackTrace();
}
}
public static final void expandStatusBar(Context ctx) {
Object sbservice = ctx.getSystemService("statusbar");
try {
Class< ?> statusBarManager = Class.forName("android.app.StatusBarManager");
Method expand;
if (Build.VERSION.SDK_INT > = 17) {
expand = statusBarManager.getMethod("expandNotificationsPanel");
} else {
expand = statusBarManager.getMethod("expand");
}
expand.invoke(sbservice);
} catch (Exception e) {
e.printStackTrace();
}
}
文章图片
用途:可用于点击Notifacation之后收起状态栏
2、 获取状态栏高度
文章图片
public static int getStatusBarHeight(Context context){
Class< ?> c = null;
Object obj = null;
Field field = null;
int x = 0, statusBarHeight = 0;
try {
c = Class.forName("com.android.internal.R$dimen");
obj = c.newInstance();
field = c.getField("status_bar_height");
x = Integer.parseInt(field.get(obj).toString());
statusBarHeight = context.getResources().getDimensionPixelSize(x);
} catch (Exception e1) {
e1.printStackTrace();
}
return statusBarHeight;
}
文章图片
3、ListView使用ViewHolder极简写法
文章图片
public static < T extends View> T getAdapterView(View convertView, int id) {
SparseArray< View> viewHolder = (SparseArray< View> ) convertView.getTag();
if (viewHolder == null) {
viewHolder = new SparseArray< View> ();
convertView.setTag(viewHolder);
}
View childView = viewHolder.get(id);
if (childView == null) {
childView = convertView.findViewById(id);
viewHolder.put(id, childView);
}
return (T) childView;
}
文章图片
用法:
文章图片
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(getActivity()).inflate(R.layout.fragment_feed_item, parent, false);
}
ImageView thumnailView = getAdapterView(convertView, R.id.video_thumbnail);
ImageView avatarView = getAdapterView(convertView, R.id.user_avatar);
ImageView appIconView = getAdapterView(convertView, R.id.app_icon);
文章图片
用起来非常简练,将ViewHolder隐于无形。
4、 设置Activity透明
文章图片
< style name="TransparentActivity" parent="AppBaseTheme">
< item name="android:windowBackground"> @android:color/transparent< /item>
< item name="android:colorBackgroundCacheHint"> @null< /item>
< item name="android:windowIsTranslucent"> true< /item>
< item name="android:windowNoTitle"> true< /item>
< item name="android:windowContentOverlay"> @null< /item>
< /style>
文章图片
说明:AppBaseTheme一般是你application指定的android:theme是啥这里就是啥,否则Activity内部的空间风格可能不一致。
用途:用于模拟Dialog效果,比如再Service中没法用Dialog,就可以用Activity来模拟
5、 代码切换全屏
文章图片
//切换到全屏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
//切换到非全屏
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN);
文章图片
【Android实用代码】注意:切换到全屏时,底部的虚拟按键仍然是显示的。次方法可多次调用用于切换
用途:播放器界面经常会用到
6、调用开发者选项中显示触摸位置功能
android.provider.Settings.System.putInt(getContentResolver(), "show_touches", 1); 设置1显示,设置0不显示。
7、获取设备上已安装并且可启动的应用列表
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List< ResolveInfo> activities = getPackageManager().queryIntentActivities(intent, 0)
推荐阅读
- android recycleView 简单使用二---分割线
- 移动 App 接入 QQ 登录/分享流程
- Ionic3 填坑记录 - java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.Dex
- 微信小程序商城开源项目,Weixin-App-Shop 1.0 版本正式发布!!!
- 升级完Android Studio3.2后,打包release出现的错误
- android RecyclerView简单的使用
- 网易考拉Android客户端网络模块设计
- Android Studio升级到3.0,抛出Aapt2Exception异常
- AndroidStudio连不上Android设备真机