Android Launcher 之 图标加框 优化显示效果

直接看代码,解释。主要是用到图片处理的

PorterDuff.Mode.SRC_ATOPSRC_ATOP

源像素和目标像素相混合让上层图居中显示,达到加框效果

package com.ferris.launchericonutils;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffXfermode;
import android.graphics.Rect;
import android.os.Bundle;
import android.widget.ImageView;

public class MainActivity extends Activity {
	private ImageView imageView;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		imageView = (ImageView) findViewById(R.id.imageView1);

		// 获得imageview中设置的图片
		Bitmap lay1 = BitmapFactory.decodeResource(getResources(),
				R.drawable.icon_folder);
		Bitmap lay2 = BitmapFactory.decodeResource(getResources(),
				R.drawable.mobileqq);
		// 获得图片的宽,并创建结果bitmap
		int width = lay1.getWidth();

		Bitmap resultBmp = Bitmap.createBitmap(width, width,
				Bitmap.Config.ARGB_8888);

		Paint paint = new Paint();
		Canvas canvas = new Canvas(resultBmp);

		canvas.drawBitmap(lay1, 0, 0, paint);// 画下层

		// 让上层的图标居中显示
		int top = 0;
		if (lay1.getHeight() > lay2.getHeight()) {
			top = (lay1.getHeight() - lay2.getHeight()) / 2;
		}else{
			//这里可以判断图片是否大于框,进而再继续获取大于的多少,进行上层图片的缩放,然后再进行交集,方法就不写了
		}
		int left = 0;
		if (lay1.getWidth() > lay2.getWidth()) {
			left = (lay1.getWidth() - lay2.getWidth()) / 2;
		}else{
			//这里可以判断图片是否大于框,进而再继续获取大于的多少,进行上层图片的缩放,然后再进行交集,方法就不写了
		}
		paint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.SRC_ATOP));// 选择交集去上层图片
		canvas.drawBitmap(lay2, left, top, paint);
		imageView.setImageBitmap(resultBmp);

	}

}

				
时间: 2024-10-14 03:50:55

Android Launcher 之 图标加框 优化显示效果的相关文章

android launcher 日历图标显示日期

看到iphone上的日历图标上的数字会随着日期的变化而变化,最近在android平台上也研究了 一下,实现方法如下: 直接上源码 在launcher里改的 首先,在IconCache.java文件中,找到方法private CacheEntry cacheLocked(ComponentName componentName, ResolveInfo info, HashMap<Object, CharSequence> labelCache) 在entry.icon = Utilities.c

Android Launcher源码结构

Launcher 是 Android手机开启后第一个运行的 应用程序,也叫Home,或者叫做手机桌面. 本文介绍的是4.1源码的launcher2 app. Android41\packages\apps\Launcher2 首先找到主Activity,打开AndroidManifest.xml  入口是  com.android.launcher2.Launcher 这个类 Launcher 主界面包含 wallpaper墙纸,work_screen屏幕, 最底部的hotseat, 以及all

Android Launcher源码研究(二) 加载app流程1

今天主要分析Android Launcher源码中的一些重要类之间的关系,基本的加载流程.先来看一个类图 Launcher.java 是主Activity 在onCreate方法里面初始化了LauncherMode实例. LauncherApplication app = ((LauncherApplication)getApplication()); mModel = app.setLauncher(this); 直接进入LauncherApplication.java的方法 Launcher

Android之ListView异步加载网络图片(优化缓存机制)【转】

网上关于这个方面的文章也不少,基本的思路是线程+缓存来解决.下面提出一些优化: 1.采用线程池 2.内存缓存+文件缓存 3.内存缓存中网上很多是采用SoftReference来防止堆溢出,这儿严格限制只能使用最大JVM内存的1/4 4.对下载的图片进行按比例缩放,以减少内存的消耗 具体的代码里面说明.先放上内存缓存类的代码MemoryCache.java: public class MemoryCache { private static final String TAG = "MemoryCa

android launcher开发之图标背景以及默认配置

1:然后我自己看了一下桌面图标的载入过程: 桌面第一次载入时是默认读取一个xml配置文件,完毕配置工作.这个配置文件在Launcher文件夹下, 路径是:\Launcher\res\xml\default_workspace.xml .这个XML文件就是刚升级,Launcher第 一次显示的时候,会读取的配置文件.default_workspace.xml里面能够配置APP快捷方式.Widget.Search搜索栏等 launcher里面负责解析default_workspace.xml文件的方

Android一个简单的警告框,带标题、图标、按钮的代码

工作之余,将内容过程比较常用的内容做个珍藏,下面内容是关于Android一个简单的警告框,带标题.图标.按钮的内容,应该是对大伙有些用. AlertDialog alertDialog = new AlertDialog.Builder(this).create();alertDialog.setTitle("Title");alertDialog.setMessage("Message");alertDialog.setButton("OK",

浅谈Android系统的图标设计规范

http://homepage.yesky.com/89/11620089.shtml 目前移动平台的竞争日益激烈,友好的用户界面可以帮助提高用户体验满意度,图标Icon是用户界面中一个重要的组成部分,今天我们来研究和学习一下Android系统的图标设计规范.在探讨Android的icon设计之前,我们有必要先了解Android的界面是如何适配多样化屏幕的. 适配性 由于同一个UI元素(如100 x100像素的图片)在高精度的屏幕上要比低精度的屏幕上看起来要小,为了让这两个屏幕上的图片看起来效果

Android Launcher分析和修改1——Launcher默认界面配置(default_workspace)

最近工作都在修改Launcher,所以打算把分析源码和修改源码的过程记录下来,最近会写一些关于Launcher的分析和修改博文.因为我是修改4.0.3的Launcher,所以后面文章里面的Launcher都是基于Android4.0.3的Launcher2修改.Launcher源码比较多,而且里面应用了很多设计模式,要把它分析清楚要花不少精力,网上也有一些零碎的分析文章,不过关于修改的文章不多.所以打算写一些分析和修改Launcher结合的文章. 原创博文,转载请标明出处:http://www.

Android Launcher 3 简单分析

最近在学习Android Launcher的相关知识,在github上找到可以在Android studio上编译的Launcher 3代码,地址:https://github.com/rydanliu/Launcher3 Launcher 3的界面主要由SearchDropTargetBar.Workspace.CellLayout.PageIndicator.Hotseat组成.如下图: Launcher 3 最主要的是一个Activity,基本上所有操作都集中在这个Activity上.这个