Code Fragment-一些工具类的特点
来源:互联网 发布:淘宝卖家子账号设置 编辑:程序博客网 时间:2024/05/16 06:40
我们的工程中会有很多工具类,工具类通常有如下的特点。
- 工具类的方法大多是静态方法。(使用的过程中,不需要new创建对象)
- 构造方法应该是private的,做到一种强制性的非new创建 ,而是通过类名直接调用。如PackgeUtils.getPackageInforation();
- 方法中需要的变量如Context,是通过参数传入,非属性(因为在静态的方法中,需要静态的属性,静态的属性会引用当前对象,阻止了垃圾回收)。
- 类名通常是XXXUtils
package com.android.phone;import android.graphics.Bitmap;import android.os.SystemClock;import android.os.SystemProperties;import android.util.Log;public class BitmapUtils { /** This class is never instantiated.正如这个英文的说明,私有的构造器是一种强制非new */ private BitmapUtils() { } public static Bitmap createBlurredBitmap(Bitmap bitmap) { long startTime = SystemClock.uptimeMillis(); if (bitmap == null) { return null; } final int scaledSize = 128; bitmap = Bitmap.createScaledBitmap(bitmap, scaledSize, scaledSize, true /* filter */); bitmap = gaussianBlur(bitmap); long endTime = SystemClock.uptimeMillis(); return bitmap; } public static Bitmap gaussianBlur(Bitmap source) {//静态方法,需要的变量传入 int width = source.getWidth(); int height = source.getHeight(); int numPixels = width * height; int[] in = new int[numPixels]; int[] tmp = new int[numPixels]; source.getPixels(in, 0, width, 0, 0, width, height); gaussianBlurFilter(in, tmp, width, height); gaussianBlurFilter(tmp, in, width, height); Bitmap filtered = Bitmap.createBitmap(in, width, height, Bitmap.Config.ARGB_8888); source.recycle(); return filtered; } private static void gaussianBlurFilter(int[] in, int[] out, int width, int height) { final int RADIUS = 4; final int[] weights = { 13, 23, 32, 39, 42, 39, 32, 23, 13}; // Adds up to 256 int inPos = 0; int widthMask = width - 1; // width must be a power of two. for (int y = 0; y < height; ++y) { int alpha = 0xff; int outPos = y; for (int x = 0; x < width; ++x) { int red = 0; int green = 0; int blue = 0; for (int i = -RADIUS; i <= RADIUS; ++i) { int argb = in[inPos + (widthMask & (x + i))]; int weight = weights[i+RADIUS]; red += weight *((argb & RED_MASK) >> RED_MASK_SHIFT); green += weight *((argb & GREEN_MASK) >> GREEN_MASK_SHIFT); blue += weight *(argb & BLUE_MASK); } out[outPos] = (alpha << 24) | ((red >> 8) << RED_MASK_SHIFT) | ((green >> 8) << GREEN_MASK_SHIFT) | (blue >> 8); outPos += height; } inPos += width; } }}
- Code Fragment-一些工具类的特点
- Code Fragment-设置自己的Logger工具类
- Code Fragment-构造工具类XXXUtils
- 抽象类的一些特点
- Code Fragment-对于一些数据类中经常使用的使用Cache存储起来。
- Fragment管理的工具类
- log4j的一些特点
- servlet的一些特点
- GIS的一些特点
- java的一些特点
- 编程的一些特点
- Smaty的一些特点
- smarty的一些特点
- UIScrollView的一些特点
- UIScrollView的一些特点
- Strust2的一些特点
- Code Profiler 一些工具推荐
- Code Fragment-当前程序结束的时候,做一些清理的操作。
- poj 2420 A Star not a Tree?
- 配置Extjs的开发环境
- IplImage CBitmap HBITMAP BITMAP之间的相互转换
- Coursera课程 Competitive Strategy内容简介
- 归并排序
- Code Fragment-一些工具类的特点
- eclipse连接小米2调试程序的问题.
- 2012 Multi-University Training Contest 6
- 【rzxt】笔者支招:Win7系统中怎么在我的电脑里面找回摄像头设置
- 我的年计划
- 0-1背包解析[以NYoj 289 苹果 为例]
- HDU1284钱币兑换问题( 母函数打表)
- 从零开始学C++之IO流类库(三):文件的读写、二进制文件的读写、文件随机读写
- unity3D入门系列十三,如何制作天空盒(SkyBox)(英文)