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

目录
相关文章
|
4月前
|
编解码 Java Android开发
安卓虚拟摄像头免root版,虚拟摄像头替换真实摄像头,jar代码开源分享
通过动态替换摄像头输入流的方式实现虚拟摄像头功能,代码经过简化展示核心逻辑。实际开发中还需要考虑视频编解码优化
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
Android远程连接和登录FTPS服务代码(commons.net库)
285 1
|
Android开发 Swift iOS开发
探索安卓与iOS开发的差异:从代码到用户体验
【10月更文挑战第5天】在移动应用开发的广阔天地中,安卓和iOS两大平台各占半壁江山。它们在技术架构、开发环境及用户体验上有着根本的不同。本文通过比较这两种平台的开发过程,揭示背后的设计理念和技术选择如何影响最终产品。我们将深入探讨各自平台的代码示例,理解开发者面临的挑战,以及这些差异如何塑造用户的日常体验。
|
存储 Java Android开发
🔥Android开发大神揭秘:从菜鸟到高手,你的代码为何总是慢人一步?💻
在Android开发中,每位开发者都渴望应用响应迅速、体验流畅。然而,代码执行缓慢却是常见问题。本文将跟随一位大神的脚步,剖析三大典型案例:主线程阻塞导致卡顿、内存泄漏引发性能下降及不合理布局引起的渲染问题,并提供优化方案。通过学习这些技巧,你将能够显著提升应用性能,从新手蜕变为高手。
205 2
|
JSON JavaScript 前端开发
Android调用Vue中的JavaScript代码
Android调用Vue中的JavaScript代码
343 3
|
安全 Java 网络安全
Android远程连接和登录FTPS服务代码(commons.net库)
很多文章都介绍了FTPClient如何连接ftp服务器,但却很少有人说如何连接一台开了SSL认证的ftp服务器,现在代码来了。
352 2
|
存储 Java Android开发
🔥Android开发大神揭秘:从菜鸟到高手,你的代码为何总是慢人一步?💻
【7月更文挑战第28天】在Android开发中,每位开发者都追求极致的用户体验。然而,“代码执行慢”的问题时常困扰着开发者。通过案例分析,我们可探索从新手到高手的成长路径。
153 3
|
API Android开发
Android 监听Notification 被清除实例代码
Android 监听Notification 被清除实例代码
|
Java Android开发
Android项目架构设计问题之要提升代码的可读性和管理性如何解决
Android项目架构设计问题之要提升代码的可读性和管理性如何解决
116 0
|
JavaScript 前端开发 Android开发
kotlin安卓在Jetpack Compose 框架下使用webview , 网页中的JavaScript代码如何与native交互
在Jetpack Compose中使用Kotlin创建Webview组件,设置JavaScript交互:`@Composable`函数`ComposableWebView`加载网页并启用JavaScript。通过`addJavascriptInterface`添加`WebAppInterface`类,允许JavaScript调用Android方法如播放音频。当页面加载完成时,执行`onWebViewReady`回调。

热门文章

最新文章