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);

注意:切换到全屏时,底部的虚拟按键仍然是显示的。次方法可多次调用用于切换

用途:播放器界面经常会用到

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也能取到你想要的数据。

系列

Android实用代码七段(一)

Android实用代码七段(二)

Android实用代码七段(三)

Android实用代码七段(四)

本文转自博客园农民伯伯的博客,原文链接:Android实用代码七段(五),如需转载请自行联系原博主。

Android实用代码七段(五)相关推荐

  1. 实用android 代码,Android 实用代码七段(一)

    前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民伯伯: http ...

  2. Android实用代码七段(三)

    前言 终于又攒了一篇出来,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~ 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http: ...

  3. Android实用代码七段(二)

    声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 一.获取应用程序下所有Acti ...

  4. Android实用代码(不定期更新)

    Android实用代码七段(一) 一抹火焰 整理(不定期更新) 前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明: 欢迎转载,但请保留文章原始出处:)  博客园 ...

  5. android实用代码

    Android实用代码七段(一) 前言 这里积累了一些不常见确又很实用的代码,每收集7条更新一次,希望能对大家有用. 声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnbl ...

  6. android 实用代码

    android 实用代码 1. 精确获取屏幕尺寸(例如:3.5.4.0.5.0寸屏幕) public static double getScreenPhysicalSize(Activity ctx) ...

  7. Android实用代码大全

    1. 精确获取屏幕尺寸(例如:3.5.4.0.5.0寸屏幕) public  static  double getScreenPhysicalSize(Activity ctx) {          ...

  8. Android实用代码3-转自农民伯伯

    声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文  一.获取已经安装APK的路径 ...

  9. Android实用代码1 - 转自农民伯伯

    声明 欢迎转载,但请保留文章原始出处:)  博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com 正文 1. 精确获取屏幕尺寸(例如: ...

最新文章

  1. 某程序的bug是什么意思?
  2. 基于FAST-RCNN深度学习的目标识别算法的MATLAB仿真
  3. Keepalived的VRRPD配置
  4. 【通知】CCIE LAB北京考场9月1日起开放考试
  5. DataTables中提示:DataTables warning: table id=example - Cannot reinitialise DataTable.
  6. vs未指定启动文件_高效开发利器之自定义模板文件
  7. 理论基础 —— 队列 —— 循环队列
  8. 结构设计模式 - 装饰器设计模式
  9. efcore调用函数_EF Core 3.1 执行sql语句的几种方法
  10. vbs中使用select case条件语句,case中匹配项多于一个时,提示:type mismathc/ 800A000D...
  11. Android复习之冒泡排序
  12. 手机12306买卧铺下铺技巧_12306火车票如何买下铺 手机12306买下铺技巧
  13. matlab对多项式求导的命令,matlab多项式求导
  14. 一次完整的软件工程课程设计
  15. 万字长文 | 最好的 C++ 模板元编程干货!
  16. linux用mame玩游戏,Ubuntu下用xmame玩街机游戏
  17. 【一款弹窗表白的pyqt5界面化小程序,完全零基础的你也可以用他追女生了】
  18. 2018,AI旗舰启程出发!自动化所全球AI邀请函
  19. mysql初始化后启动失败_初始化MySQL后服务不能正常启动
  20. 配置路由器用SSH登陆

热门文章

  1. mysql embed_html中object和embed标签的区别
  2. linux网络管理证书,计算机网络管理工程师技术水平证书有什么用
  3. 微信小程序万里目_4款万里挑一的微信小程序,每一个都是黑科技!
  4. 兼容ie8_兼容IE8的一些笔记
  5. 华为上半年手机销量_十月京东手机销量!华为mate40火爆,苹果11近百万销量
  6. FPGA之道(23)VHDL的signal、variable与constant
  7. 【 FPGA 】时钟抖动浅记
  8. Github拉取远端的时候提示“ssh: connect to host github.com port 22: Connection timed out”错误...
  9. SharePoint 2013 创建一个搜索中心和搜索设置
  10. 第一次来写博客,这里可以记录很多故事。