Android实用代码七段(五)
2023-09-14 09:00:59 时间
每次分享意味着每次都有进步,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~
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();
}
}
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;
}
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);
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
//切换到全屏
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);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
List ResolveInfo activities = getPackageManager().queryIntentActivities(intent, 0)
public static double getScreenPhysicalSize(Activity ctx) { DisplayMetrics dm = new DisplayMetrics(); ctx.
欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com
正文
1、展开、收起状态栏
![复制代码](http://common.cnblogs.com/images/copycode.gif)
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();
}
}
![复制代码](http://common.cnblogs.com/images/copycode.gif)
用途:可用于点击Notifacation之后收起状态栏
2、 获取状态栏高度
![复制代码](http://common.cnblogs.com/images/copycode.gif)
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;
}
![复制代码](http://common.cnblogs.com/images/copycode.gif)
3、ListView使用ViewHolder极简写法
![复制代码](http://common.cnblogs.com/images/copycode.gif)
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;
}
![复制代码](http://common.cnblogs.com/images/copycode.gif)
用法:
![复制代码](http://common.cnblogs.com/images/copycode.gif)
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);
![复制代码](http://common.cnblogs.com/images/copycode.gif)
用起来非常简练,将ViewHolder隐于无形。
4、 设置Activity透明
![复制代码](http://common.cnblogs.com/images/copycode.gif)
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
![复制代码](http://common.cnblogs.com/images/copycode.gif)
说明:AppBaseTheme一般是你application指定的android:theme是啥这里就是啥,否则Activity内部的空间风格可能不一致。
用途:用于模拟Dialog效果,比如再Service中没法用Dialog,就可以用Activity来模拟
5、 代码切换全屏
![复制代码](http://common.cnblogs.com/images/copycode.gif)
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);
![复制代码](http://common.cnblogs.com/images/copycode.gif)
注意:切换到全屏时,底部的虚拟按键仍然是显示的。次方法可多次调用用于切换
用途:播放器界面经常会用到
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)
注意:使用getInstalledApplications会返回很多无法启动甚至没有图标的系统应用。ResolveInfo.activityInfo.applicationInfo也能取到你想要的数据。
转载:http://www.cnblogs.com/over140/p/4062209.html
public static double getScreenPhysicalSize(Activity ctx) { DisplayMetrics dm = new DisplayMetrics(); ctx.
相关文章
- Android开发--解决AndroidADT开发工具不能代码提示的问题
- android 实现淘宝收益图的折线
- android移动view
- Android----基于多触控的图片缩放和拖动代码实现
- 【ANDROID游戏开发十八】解放手指,利用传感器开发游戏!(本文讲解在SURFACEVIEW中用重力传感器控制圆球的各方向移动)
- android脚步---简单图片浏览器改变图像透明度
- Unity3d和Android之间互相调用
- Android--简单的画画板实例代码
- cordova(ios android)蓝牙权限 手机蓝牙开关开启 跳到设置界面
- Android Studio修行手册,快速涨薪-【界面预览】、【自带截图】、【自动排序代码】、【快速查看界面】和【预览列表】、【Null判断】
- Android 显示刷新频率的实现代码
- Android 9.0 如何自定义自己的build.prop
- Android 销毁当前页面
- Android 10.0下拉通知栏 通知列表 添加通知头
- android 解决报错 installation failed with message Failed to finalize session : INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION: Failed parse during installPackageLI: Failed to read manifest from /xx/xx/xx.apk
- 【Android 逆向】Android 进程注入工具开发 ( 注入代码分析 | 远程调用 目标进程中 libc.so 动态库中的 mmap 函数 一 | mmap 函数简介 )
- 【Android 逆向】修改 Android 系统文件 ( default.prop 配置信息 | 修改 default.prop 配置信息文件 )
- 【Android 安装包优化】移除无用资源 ( 自动移除无用资源 | 直接引用资源 | 动态获取资源 id | Lint 检查资源 )
- 【Android 异步操作】线程池 ( 线程池使用示例 | 自定义线程池使用流程 | 自定义任务拒绝处理策略 | 完整代码示例 )
- 【Android 性能优化】应用启动优化 ( Trace 文件分析 | 结合代码分析 Trace 文件 )
- Android视频通话Java代码
- Android Studio禁止混淆JNI代码