Android实用代码七段(五)

简介:

前言

 每次分享意味着每次都有进步,本系列以实用为主,欢迎和我分享和推荐好用的代码段~~

 

声明
欢迎转载,但请保留文章原始出处:) 
博客园:http://www.cnblogs.com
农民伯伯: http://over140.cnblogs.com 

 

正文

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


转载:http://www.cnblogs.com/over140/p/4062209.html

目录
相关文章
|
1月前
|
Ubuntu 网络协议 Java
【Android平板编程】远程Ubuntu服务器code-server编程写代码
【Android平板编程】远程Ubuntu服务器code-server编程写代码
|
3月前
|
人工智能 IDE 开发工具
Studio Bot - 让 AI 帮我写 Android 代码
Studio Bot - 让 AI 帮我写 Android 代码
158 1
|
9月前
|
IDE 数据可视化 Java
Android自动生成代码,可视化脚手架之基础信息配置
今天的内容比较简单,大致过一下Electron一些基本用法,虽然说这些比较简单,但又是不得不去了解的,正如做Android的我们,也不是一上来就会的,需要一个循序渐进的过程,下一章,我们再去实际的开发功能。
133 0
|
2月前
|
Ubuntu 网络协议 Linux
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
【Linux】Android平板上远程连接Ubuntu服务器code-server进行代码开发
57 0
|
3月前
|
安全 算法 JavaScript
安卓逆向 -- 关键代码定位与分析技术
安卓逆向 -- 关键代码定位与分析技术
42 0
|
3月前
|
安全 Android开发 数据安全/隐私保护
代码安全之代码混淆及加固(Android)
代码安全之代码混淆及加固(Android)
42 0
|
4月前
|
安全 Java Android开发
Android App开发之安全加固中反编译、代码混淆、第三方加固以及重签名的讲解及实战(图文解释 简单易懂)
Android App开发之安全加固中反编译、代码混淆、第三方加固以及重签名的讲解及实战(图文解释 简单易懂)
72 0
|
6月前
|
XML Java Android开发
Android 解决使用CocosCreator开发产品上架应用市场代码重复问题
Android 解决使用CocosCreator开发产品上架应用市场代码重复问题
275 0
|
7月前
|
JSON dexposed Java
一文总结 Android 隐私合规代码思路
一文总结 Android 隐私合规代码思路
|
7月前
|
SQL 程序员 Android开发
一行代码,利用 android studio自带的 liveTemplate 快速生成单例模式,程序员偷懒神器
一行代码,利用 android studio自带的 liveTemplate 快速生成单例模式,程序员偷懒神器