Utils工具方法

来源:互联网 发布:什么是销存软件 编辑:程序博客网 时间:2024/05/16 12:20
package com.eno.tools;

import java.io.ByteArrayOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.HashMap;


import android.content.Context;
import android.content.res.Resources;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.Bitmap.CompressFormat;
import android.util.Log;
import android.util.TypedValue;


import com.eno.base.utils.ENOFloat;
import com.eno.base.utils.TCRS;
import com.eno.base.utils.TCRSField;
import com.eno.chart.model.ModelFS.RatioStyle;
import com.eno.constant.ENOStyle;
import com.eno.log.Logger;


/**
 * 工具类
 * 
 * @author eno_xmf
 * @version 创建时间:2012-8-8 下午5:19:20
 */
public class Utils {


//保存文件到手机
public void saveFile(String fileName,String textContent) throws IOException 
{
//实例化fileName文件(输出流)对象
FileOutputStream outStream=context.openFileOutput(fileName, Context.MODE_PRIVATE);
/*
* 操作模式
* Context.MODE_PRIVATE:代表该文件是私有数据,只能被应用本身访问
* Context.MODE_APPEND:模式会检查文件是否存在,存在就往文件追加内容,否则就创建新文件
* MODE_WORLD_READABLE:表示当前文件可以被其他应用读取;
* MODE_WORLD_WRITEABLE:表示当前文件可以被其他应用写入。
* Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE读和写
* Context.MODE_WORLD_READABLE + Context.MODE_WORLD_WRITEABLE+Context.MODE_APPEND读写追加
* */
//写入数据
outStream.write(textContent.getBytes());
//关闭输出流
outStream.close();
}
//从手机读取文件
public String readFile(String fileName) throws IOException 
{
//实例化fileName文件(输入流)对象
FileInputStream fis=context.openFileInput(fileName);
//定义byte存储空间
byte[] b=new byte[1024];
//定义读取字节长度
int n=0;
//实例化字节数组流(可以捕获内存缓冲区的数据,转换成字节数组。)
ByteArrayOutputStream byteArrayOutputStream=new ByteArrayOutputStream();
//读取数据读到byte中
while((n=fis.read(b))!=-1)
{
//把数据写到byte中
byteArrayOutputStream.write(b);
}
//重缓冲区中拿取二进制数据并转换成字节数组
byte content[]=byteArrayOutputStream.toByteArray();
//返回String
return new String(content);
}


//保存文件到SD卡
public void saveToSdCard(String filename,String content) throws IOException 
{
saveToSdCard( filename,content.getBytes());
}


//保存文件到SD卡
public void saveToSdCard(String filename,byte [] data) throws IOException 
{
//得到手机默认存储目录。并实例化
File file=new File(Environment.getExternalStorageDirectory(),filename);
FileOutputStream fos=new FileOutputStream(file);
fos.write(data);
fos.close();
}

//重SD卡中读取文件内容
public String readContentForSdcard(String filename) throws IOException
{
//Environment.getExternalStorageDirectory() 得到外部存储目录
File file=new File(Environment.getExternalStorageDirectory(),filename);
FileInputStream sdstream=new FileInputStream(file);
byte b[]=new byte[1024];
int n=0;
ByteArrayOutputStream byteArrayOS=new ByteArrayOutputStream();
while((n=sdstream.read(b))!=-1)
{
byteArrayOS.write(b);
}
byte sdContent[]=byteArrayOS.toByteArray();
return new String(sdContent);
}
/**
* 获取两位小数

* @param values
* @return
*/
public static String getTwoDecimals(Object values) {
if (values != null && !"".equals(values)) {
String value = values.toString();
if (isNumber(value)) {
BigDecimal bd = new BigDecimal(value);
bd = bd.setScale(2, BigDecimal.ROUND_HALF_EVEN);
return bd.toString();
} else {
return value;
}
} else {
return "--";
}
}


public static boolean isNumber(String str) {
String number = "0123456789-.";
int len = str.length();
for (int i = 0; i < len; i++) {
char c = str.charAt(i);
if (number.indexOf(String.valueOf(c)) == -1) {
return false;
}
}
return true;


}


public static String TimeFormate(int t) {
String te = "00" + t;
te = te.substring(te.length() - 2, te.length());
return te;
}


/**
* 获取当前时间

* @param type
* @return type=1,YYYY-MM-DD HH:MM ;type=2,HH:MM; type=3,YYYY-MM-DD ;
*/
public static String getCurrentTime(int type) {
String str = "";
// TimeZone defaultZone = TimeZone.getTimeZone("GMT+8");
// TimeZone defaultZone = TimeZone.getDefault();
// if( defaultZone.getRawOffset() != 28800000 )
// defaultZone = TimeZone.getTimeZone("GMT+8");
// Calendar ca = Calendar.getInstance(defaultZone);
Calendar ca = Calendar.getInstance();
int yy = ca.get(Calendar.YEAR);
int hh = ca.get(Calendar.HOUR_OF_DAY);
int mm = ca.get(Calendar.MINUTE);
int mom = ca.get(Calendar.MONTH) + 1;
int dd = ca.get(Calendar.DAY_OF_MONTH);
int second = ca.get(Calendar.SECOND) ;
switch (type) {
case 1:
str = yy + "-" + TimeFormate(mom) + "-" + TimeFormate(dd) + " "
+ TimeFormate(hh) + ":" + TimeFormate(mm);// +":"+format(ss);
break;
case 2:
str = TimeFormate(hh) + ":" + TimeFormate(mm);
break;
case 3:
str = yy + "-" + TimeFormate(mom) + "-" + TimeFormate(dd);
break;
case 4:
str = TimeFormate(hh) + ":" + TimeFormate(mm)+ ":"+TimeFormate(second) ;
break ;
}


return str;
}


/**
* 获取当前时间

* @param type
*            返回日期的类型,dayBefore 日期提前天数
* @return type=1,YYYY-MM-DD HH:MM ;type=2,HH:MM; type=3,YYYY-MM-DD ;
*/
public static String getCurrentTime(int type, int dayBefore) {
String str = "";
Calendar ca = Calendar.getInstance();
ca.add(Calendar.DAY_OF_MONTH, -dayBefore); // 提前几天
int yy = ca.get(Calendar.YEAR);
int hh = ca.get(Calendar.HOUR_OF_DAY);
int mm = ca.get(Calendar.MINUTE);
int mom = ca.get(Calendar.MONTH) + 1;
int dd = ca.get(Calendar.DAY_OF_MONTH);
switch (type) {
case 1:
str = yy + "-" + TimeFormate(mom) + "-" + TimeFormate(dd) + " "
+ TimeFormate(hh) + ":" + TimeFormate(mm);// +":"+format(ss);
break;
case 2:
str = TimeFormate(hh) + ":" + TimeFormate(mm);
break;
case 3:
str = yy + "-" + TimeFormate(mom) + "-" + TimeFormate(dd);
break;
}


return str;
}

/**
* 获取当前分辨率下指定单位对应的像素大小(根据设备信息) px,dip,sp -> px

* Paint.setTextSize()单位为px

* 代码摘自:TextView.setTextSize()

* @param unit
*            TypedValue.COMPLEX_UNIT_*
* @param size
* @return
*/
public static float getRawSize(Context context, int unit, float size) {
Context c = context;
Resources r;


if (c == null)
r = Resources.getSystem();
else
r = c.getResources();


return TypedValue.applyDimension(unit, size, r.getDisplayMetrics());
}


/**
* 根据手机的分辨率从 dp 的单位 转成为 px(像素)
*/
public static int dip2px(Context context, float dpValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (dpValue * scale + 0.5f);
}


/**
* 根据手机的分辨率从 px(像素) 的单位 转成为 dp
*/
public static int px2dip(Context context, float pxValue) {
final float scale = context.getResources().getDisplayMetrics().density;
return (int) (pxValue / scale + 0.5f);
}


/**
* 将px值转换为sp值,保证文字大小不变

* @param pxValue
* @param fontScale
*            (DisplayMetrics类中属性scaledDensity)
* @return
*/
public static int px2sp(Context context, float pxValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (pxValue / fontScale + 0.5f);
}


/**
* 将sp值转换为px值,保证文字大小不变

* @param spValue
* @param fontScale
*            (DisplayMetrics类中属性scaledDensity)
* @return
*/
public static int sp2px(Context context, float spValue) {
final float fontScale = context.getResources().getDisplayMetrics().scaledDensity;
return (int) (spValue * fontScale + 0.5f);
}


public static DecimalFormat formatter = new DecimalFormat("####.##");


/** 将原始数据除以10000所得的结果 **/
public static String fromat2Myriad(String pSrcVal) {
return formatter.format(Double.parseDouble(pSrcVal) / 10000.0);
}


/** 将给定的数字保留两位小数返回 **/
public static double format2Double(double pSrcVal) {
return (double) Math.round(pSrcVal * 100) / 100.0;
}


/** 将给定的数字变成小数点后两位的字符串 **/
public static String format(double pSrcVal) {
return formatter.format(pSrcVal);
}


/** 将原始数据除以10000所得的结果 **/
public static String fromat2Myriad(double pSrcVal) {
return formatter.format(pSrcVal / 10000.0);
}


/**
* 将图片压缩成二进制数组

* @param bitmap
* @return
*/
public byte[] getBitmapByte(Bitmap bitmap) {
ByteArrayOutputStream out = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.JPEG, 100, out);
try {
out.flush();
out.close();
} catch (IOException e) {
e.printStackTrace();
}
return out.toByteArray();
}


/**
* 将二进制数组转化为图片

* @param temp
* @return
*/
public Bitmap getBitmapFromByte(byte[] temp) {
if (temp != null) {
Bitmap bitmap = BitmapFactory.decodeByteArray(temp, 0, temp.length);
return bitmap;
} else {
return null;
}
}


/**
* 放大图片

* @param bitmap
* @param width
*            放大到最大的宽度,以dip为单位
* @param height
*            放大到最高的高度,以dip为单位
* @param mContext
* @return
*/
public static Bitmap zoomInImage(Bitmap bitmap, int width, int height,
Context mContext) {


width = dip2px(mContext, width);
height = dip2px(mContext, height);


// Display dispaly=


int widthImage = bitmap.getWidth();
int heightImage = bitmap.getHeight();


float scaleWidth = Math.max((float) width / widthImage, 1.0f);
float scaleHeight = Math.max(1.0f, (float) height / heightImage);


scaleWidth = Math.min(scaleWidth, 20.0f);
scaleHeight = Math.min(scaleHeight, 20.0f);


Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleWidth);
// Logger.d("**********8  widthImage="+widthImage+"   heightImage="+heightImage
// +
// " width="+width+"   height="+height+"  scaleHeight="+scaleHeight
// +"   scaleWidth="+scaleWidth) ;
// Logger.d("原始:bitmap.getWidth()="+bitmap.getWidth()+" bitmap.getHeight()="+
// bitmap.getHeight());
bitmap = Bitmap.createBitmap(bitmap, 0, 0, widthImage, heightImage,
matrix, true);
// Logger.d("放大后:bitmap.getWidth()="+bitmap.getWidth()+" bitmap.getHeight()="+
// bitmap.getHeight());
return bitmap;
}


/**
* 格式化数字,列如:将-123432423423.134 格式化为 -123,432,423,423.134

* @param str
* @return
*/
public static String formatMoney(Double d) {
// d=123345.12945;
BigDecimal bg = new BigDecimal(d);
// Logger.d("Utils   formatMoney   bg="+ bg);
double f1 = bg.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
// Logger.d("Utils   formatMoney   f1="+ bg);
formatter.applyPattern(",###.00");
String str = formatter.format(f1);


if (".00".equals(str))
str = "0.00";
return  str;


}


/**
* 判斷是否低於 api 16的版本

* @return 低於16返回 false,否則返回 ,true
*/
public static boolean isLowerAPI() {


int api = android.os.Build.VERSION.SDK_INT;


Logger.d("Utils   api=" + api);


if (api > 15) {
return false;
}


return true;
}



}
0 0