`

Android 4.0为Launcher主界面所有应用程序图标添加统一背景主题 .

 
阅读更多
   Android主界面的应用程序图标风格迥异,为了使用户看上去感觉比较统一,决定对其图标进行设置统一背景。

   在ApplicationPackageManager.java里有个public Drawable getDrawable(String packageName, int resid,ApplicationInfo appInfo) 的方法用于返回应用的图标。所以,我们可以在解析完成并在它被放入到缓存cache里面前,就对图标进行处理,使之成为我们想要的效果。

     //icon:获取的应用程序图标  idImg:想要添加的背景view id
    private Drawable buildTrayForIcon(Drawable icon, int idImg){
        
         Resources res = this.getResources();
         BitmapDrawable bd = new BitmapDrawable(buildTrayForIcon(icon, BitmapFactory.decodeResource(res, idImg)));
         bd.setTargetDensity(res.getDisplayMetrics());
         return bd;
    }


    private Bitmap buildTrayForIcon(Drawable icon, Bitmap background){
        
         if(icon == null){
                return null;
         }
       
          
         final int backgroundWith = background.getWidth();
       
         final int backgrouncHeight = background.getHeight();
       
         int sourceWidth = icon.getIntrinsicWidth();
         int sourceHeight = icon.getIntrinsicHeight();
        
     
         /**
          * 这里需要做的工作是:如何确保原图会在要加上图的中间
          * 如果原图比背景图要大的话就会使原图画不出来。所以这时候
          * 给出了一个固定的大小值来限定,right-left小于原图的宽,
          * 或者bottom-top小于原图的高 将原图进行缩放
          */
         int left = (backgroundWith - sourceWidth) / 2;
         int top = (backgrouncHeight - sourceHeight) / 2 ;
         int right=left+sourceWidth;
         int bottom=top+sourceHeight;
        
         if(left<0 ){
             left=0;
             left+=15;//这些值可以自己进行看情况设置,我这只是一个测试版
            
             right=backgroundWith-15;
         }
        
         if(top<0){
             top=0;
             top+=15;
            
             bottom=backgrouncHeight-15;
         }
           
         Bitmap compoundBitmap = null;
         compoundBitmap = Bitmap.createBitmap(backgroundWith, backgrouncHeight, Config.ARGB_8888);
         //Drawable d=new Drawable(compoundBitmap);
         //Drawable drawable = new BitmapDrawable(compoundBitmap); 
        
         Canvas canvas = new Canvas(compoundBitmap);
         canvas.drawBitmap(background, 0, 0, null);
         //Rect r=drawable.getBounds();
        

         //sOldBounds.set(icon.getBounds().left,);
       
         //icon.setBounds(left, top, left+width, top+height);
         icon.setBounds(left, top, right, bottom);
         icon.draw(canvas);
         //icon.setBounds(sOldBounds);
     
         return compoundBitmap;
        }

       这样处理之后就能达到我们的效果了。


分享到:
评论

相关推荐

    android4.0 Launcher2

    本文将围绕"android4.0 Launcher2"这一主题,深入探讨其关键知识点。 一、Launcher2概述 Launcher2是在Android 4.0系统中默认的启动器,负责管理应用程序的快捷方式和小部件。它是一个基于组件的系统服务,运行在...

    android4.0 主界面源码 launcher

    在Android 4.0(Ice Cream Sandwich)系统中,"Launcher"是主界面的核心组件,它负责呈现桌面、快捷方式和应用抽屉等用户交互界面。深入理解Launcher的源码对于Android开发者来说至关重要,因为这有助于优化用户体验,...

    android4.0原生launcher代码

    - Android 4.0 的 Launcher 具有严格的权限管理,例如,只有特定的系统应用才能在主屏幕上添加或移除图标。 通过深入研究 Android 4.0 原生 Launcher 的源码,开发者可以学习到如何处理触摸事件、实现高效的滚动...

    android4.0-launcher可运行源码

    当我们谈论“android4.0-launcher可运行源码”时,意味着我们可以直接在Eclipse开发环境中运行这个源代码,这为我们提供了深入理解Android 4.0 Launcher工作原理的机会。这篇内容将详述Android 4.0 Launcher的核心...

    android Launcher 4.0 (原生版本)

    3. **动态壁纸**:Android 4.0原生Launcher支持动态壁纸,为用户提供更加生动和个性化的桌面背景。这些壁纸不仅美观,还能与用户交互,增强了桌面的趣味性。 4. **主屏幕管理**:用户可以自定义主屏幕的数量,添加...

    android4.0 Launcher2 界面 源代码

    Android 4.0 的 Launcher2 是 Android 桌面启动器的一个版本,它负责呈现用户在设备上看到的主屏幕、应用抽屉和其他界面。在这个源代码包中,我们可以深入理解 Android 应用程序框架、UI 设计以及系统级别的交互逻辑...

    Android 4.0 Launcher2 源码 Eclipse版

    【Android 4.0 Launcher2 源码 Eclipse版】是一个专门为Android 4.0 (Ice Cream Sandwich)系统设计的启动器源代码,适合开发者深入理解Android系统的桌面启动器工作原理,以及进行自定义开发。这个源代码版本是为...

    launcher源码(ADWlauncher+android4.0原生launcher)

    在Android系统中,Launcher是用户界面的核心组成部分,它负责提供主屏幕、应用抽屉和桌面小部件等功能。这里我们关注的是"launcher源码",包括ADW.Launcher和Android 4.0(Ice Cream Sandwich,简称ICS)的原生...

    android 定制 launcher 4.0源码

    在Android系统中,Launcher是用户与设备交互的入口,它负责展示桌面图标、应用抽屉以及各种快捷方式,使得用户可以启动不同的应用程序。定制Launcher意味着开发者可以根据自己的需求修改默认的界面布局、添加特色...

    android4.0 launcher2

    "Android 4.0 Launcher2"是Android操作系统的一个核心组件,它是用户与设备交互的主界面,负责显示应用快捷方式、小部件以及桌面布局。在这个源代码中,我们可以深入理解Android系统的桌面启动器是如何实现其功能的...

    Android 4.0 Launcher系统源码

    Android 4.0 Launcher系统源码是Android操作系统中桌面启动器的重要组成部分,它负责管理主屏幕、应用快捷方式、小部件以及桌面布局等用户界面。深入理解这部分源码对于开发者来说,有助于定制个性化启动器或者优化...

    Android4.0 Ice Cream Sandwich Launcher 源码

    在Android系统中,Launcher是用户界面的核心组成部分,它充当了主屏幕和应用程序抽屉的角色,让用户可以启动应用、管理桌面快捷方式以及自定义桌面布局。Android 4.0 Ice Cream Sandwich(简称ICS)对Launcher进行了...

    android 4.0 launcher分析

    在Launcher中,Activity尤为重要,因为它直接响应用户的交互,展现应用程序的界面。 UI设计是Android Launcher的重要组成部分。Android提供了丰富的UI元素和布局管理器,如LinearLayout、RelativeLayout、...

    android4.0 launcher源码

    Android 4.0(Ice Cream Sandwich,简称ICS)是Google推出的一个重要版本,其Launcher作为用户与系统交互的主界面,扮演着至关重要的角色。Launcher2是该版本中默认的桌面启动器,它的源码提供了深入了解Android系统...

    android4.0中Launcher2源码

    在Android 4.0(Ice Cream Sandwich)系统中,Launcher2是主屏幕应用程序,负责显示桌面图标、小部件以及启动其他应用。它是用户与系统交互的重要界面,因此深入理解其源码对于Android开发者来说至关重要。以下是对...

    android 4.0 Launcher2 源码

    Android 4.0 的 Launcher2 是 Android 操作系统中的主屏幕应用,负责显示桌面图标、小部件和其他可启动的应用程序。源码分析可以帮助开发者深入理解其工作原理,从而进行自定义开发或性能优化。以下是对 Android 4.0...

    android2.3 仿 4.0 launcher

    【Android 2.3 仿 4.0 Launcher】是一个针对Android 2.3 Gingerbread系统设计的桌面启动器,其目标是模仿Android 4.0 Ice Cream Sandwich的用户界面和功能。在Android 2.3系统上使用这个启动器,用户可以获得与...

    Launcher2源代码 android4.0

    在Android操作系统中,Launcher是用户界面的核心部分,它作为系统的桌面,提供应用程序的快捷方式、小部件以及主屏幕管理功能。Launcher2是Android 4.0(ICS,Ice Cream Sandwich)时期的默认启动器,它的源代码对于...

    Android Launcher4.0工程

    Android Launcher是操作系统的核心组件之一,它负责为用户提供桌面界面,展示应用快捷方式和小部件,以及管理设备的主屏幕。Android 4.0(Ice Cream Sandwich)版本的Launcher在设计和功能上进行了显著改进,以提供...

    Android 4.0 Launcher2 源码 Eclipse版(已修改包名,不冲突系统桌面)

    Android 4.0 的 Launcher2 是 Android 系统的核心组件之一,它负责提供用户界面,让用户可以启动应用程序、管理主屏幕以及自定义桌面布局。在深入探讨源码之前,我们先来了解一下 Launcher2 的基本概念。 Launcher2...

Global site tag (gtag.js) - Google Analytics