package com.lling.qiqu.utils; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.InputStream; import java.util.ArrayList; import java.util.regex.Pattern; import android.app.ActivityManager; import android.app.ActivityManager.RunningServiceInfo; import android.app.Dialog; import android.content.Context; import android.content.pm.PackageManager.NameNotFoundException; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Environment; import android.os.StatFs; import android.util.DisplayMetrics; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; import android.widget.EditText; import android.widget.ListAdapter; import android.widget.ListView; import com.lling.qiqu.R; /** * 工具類 */ public class ToolsUtils { public ToolsUtils() { // TODO Auto-generated constructor stub } /** * 检查是否存在SDCard * * @return */ public static boolean hasSdcard() { String state = Environment.getExternalStorageState(); if (state.equals(Environment.MEDIA_MOUNTED)) { return true; } else { return false; } } /** * 查看SD卡的剩余空间 * @return */ public long getSDFreeSize(){ //取得SD卡文件路径 File path = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(path.getPath()); //获取单个数据块的大小(Byte) long blockSize = sf.getBlockSize(); //空闲的数据块的数量 long freeBlocks = sf.getAvailableBlocks(); //返回SD卡空闲大小 return (freeBlocks * blockSize)/1024 /1024; //单位MB } /** * 查看SD卡总容量 * @return */ public long getSDAllSize(){ //取得SD卡文件路径 File path = Environment.getExternalStorageDirectory(); StatFs sf = new StatFs(path.getPath()); //获取单个数据块的大小(Byte) long blockSize = sf.getBlockSize(); //获取所有数据块数 long allBlocks = sf.getBlockCount(); //返回SD卡大小 return (allBlocks * blockSize)/1024/1024; //单位MB } /** * 获取屏幕的宽 * @param context * @return */ public static int getScreenWidth(Context context) { WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); DisplayMetrics dm=new DisplayMetrics(); manager.getDefaultDisplay().getMetrics(dm); return dm.widthPixels; } /** * 获取版本号 * * @param context * @return */ public static int getVersionCode(Context context) { int versionCode = 0; try { // 获取软件版本号 versionCode = context.getPackageManager().getPackageInfo( context.getPackageName(), 1).versionCode; } catch (NameNotFoundException e) { e.printStackTrace(); } return versionCode; } /** * 获取版本名称 * * @param context * @return */ public static String getVersionName(Context context) { String versionName = ""; try { // 获取软件版本名称 versionName = context.getPackageManager().getPackageInfo( context.getPackageName(), 1).versionName; } catch (NameNotFoundException e) { e.printStackTrace(); } return versionName; } /** * 隐藏键盘 * * @param v * @return */ public static void hideKeyboard(View v) { InputMethodManager imm = (InputMethodManager) v.getContext() .getSystemService(Context.INPUT_METHOD_SERVICE); if (imm.isActive()) { imm.hideSoftInputFromWindow(v.getApplicationWindowToken(), 0); } } /** * 打卡软键盘 * @param mEditText输入框 * @param mContext上下文 */ public static void openKeybord(EditText mEditText, Context mContext) { InputMethodManager imm = (InputMethodManager) mContext .getSystemService(Context.INPUT_METHOD_SERVICE); imm.showSoftInput(mEditText, InputMethodManager.RESULT_SHOWN); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); } /** * 判断软键盘是否显示 * @param context * @return */ public static boolean isKeybordShow(Context context) { InputMethodManager imms = (InputMethodManager) context.getSystemService(Context.INPUT_METHOD_SERVICE); return imms.isActive(); } /** * 判断某个service是否正在运行 * @param context * @param serviceName * @return */ public static boolean isServiceWorked(Context context, String serviceName) { ActivityManager myManager = (ActivityManager) context .getSystemService(Context.ACTIVITY_SERVICE); ArrayList<RunningServiceInfo> runningService = (ArrayList<RunningServiceInfo>) myManager .getRunningServices(30); for (int i = 0; i < runningService.size(); i++) { if (runningService.get(i).service.getClassName().toString() .equals(serviceName)) { return true; } } return false; } /** * 设置dialog背景和动画 * @param dialig */ public static void setDialogBgAndAnim(Dialog dialig) { // 设置背景变暗 WindowManager.LayoutParams lp = dialig.getWindow() .getAttributes(); lp.dimAmount = 0.7f; // 设置30%暗度 dialig.getWindow().setAttributes(lp); // 设置对话框弹出动画 dialig.getWindow().setWindowAnimations(R.style.dialogAnim); } /** * 将字节转换为图像 * @param bytes * @param opts * @return */ public static Bitmap getPicFromBytes(byte[] bytes, BitmapFactory.Options opts) { if (bytes != null) if (opts != null) return BitmapFactory.decodeByteArray(bytes, 0, bytes.length, opts); else return BitmapFactory.decodeByteArray(bytes, 0, bytes.length); return null; } /** * 将流转换为字节 * * @param inStream * @return * @throws Exception */ public static byte[] readStream(InputStream inStream) throws Exception { byte[] buffer = new byte[1024]; int len = -1; ByteArrayOutputStream outStream = new ByteArrayOutputStream(); while ((len = inStream.read(buffer)) != -1) { outStream.write(buffer, 0, len); } byte[] data = outStream.toByteArray(); outStream.close(); inStream.close(); return data; } public static String Html2Text(String inputString) { String htmlStr = inputString; // 含html标签的字符串 String textStr = ""; java.util.regex.Pattern p_script; java.util.regex.Matcher m_script; java.util.regex.Pattern p_style; java.util.regex.Matcher m_style; java.util.regex.Pattern p_html; java.util.regex.Matcher m_html; java.util.regex.Pattern p_html1; java.util.regex.Matcher m_html1; try { String regEx_script = "<[//s]*?script[^>]*?>[//s//S]*?<[//s]*?///[//s]*?script[//s]*?>"; // 定义script的正则表达式{或<script[^>]*?>[//s//S]*?<///script> String regEx_style = "<[//s]*?style[^>]*?>[//s//S]*?<[//s]*?///[//s]*?style[//s]*?>"; // 定义style的正则表达式{或<style[^>]*?>[//s//S]*?<///style> String regEx_html = "<[^>]+>"; // 定义HTML标签的正则表达式 String regEx_html1 = "<[^>]+"; p_script = Pattern.compile(regEx_script, Pattern.CASE_INSENSITIVE); m_script = p_script.matcher(htmlStr); htmlStr = m_script.replaceAll(""); // 过滤script标签 p_style = Pattern.compile(regEx_style, Pattern.CASE_INSENSITIVE); m_style = p_style.matcher(htmlStr); htmlStr = m_style.replaceAll(""); // 过滤style标签 p_html = Pattern.compile(regEx_html, Pattern.CASE_INSENSITIVE); m_html = p_html.matcher(htmlStr); htmlStr = m_html.replaceAll(""); // 过滤html标签 p_html1 = Pattern.compile(regEx_html1, Pattern.CASE_INSENSITIVE); m_html1 = p_html1.matcher(htmlStr); htmlStr = m_html1.replaceAll(""); // 过滤html标签 textStr = htmlStr; } catch (Exception e) { Log.e("Html2Text" , e.getMessage()); } return textStr;// 返回文本字符串 } /** * 手动设置listview的高度,包裹所有元素 * @param listView */ public static void setListViewHeightBasedOnChildren(ListView listView) { ListAdapter listAdapter = listView.getAdapter(); if (listAdapter == null) { // pre-condition return; } int totalHeight = 0; for (int i = 0; i < listAdapter.getCount(); i++) { View listItem = listAdapter.getView(i, null, listView); listItem.measure(0, 0); totalHeight += listItem.getMeasuredHeight(); } ViewGroup.LayoutParams params = listView.getLayoutParams(); params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1)); listView.setLayoutParams(params); } }