Android 开发工具类 11_ToolFor9Ge

1、缩放/ 裁剪图片;

2、判断有无网络链接;

3、从路径获取文件名;

4、通过路径生成 Base64 文件;

5、通过文件路径获取到 bitmap;

6、把 bitmap 转换成 base64;

7、把 base64 转换成 bitmap;

8、把 Stream 转换成 String;

9、修改整个界面所有控件的字体;

10、修改整个界面所有控件的字体大小;

11、不改变控件位置,修改控件大小;

12、修改控件的高。

  1 import java.io.BufferedReader;
  2 import java.io.ByteArrayOutputStream;
  3 import java.io.File;
  4 import java.io.FileInputStream;
  5 import java.io.IOException;
  6 import java.io.InputStream;
  7 import java.io.InputStreamReader;
  8 import java.lang.ref.WeakReference;
  9 
 10 import android.app.Activity;
 11 import android.content.Context;
 12 import android.graphics.Bitmap;
 13 import android.graphics.BitmapFactory;
 14 import android.graphics.Matrix;
 15 import android.graphics.Bitmap.CompressFormat;
 16 import android.graphics.Typeface;
 17 import android.net.ConnectivityManager;
 18 import android.net.NetworkInfo.State;
 19 import android.util.Base64;
 20 import android.view.View;
 21 import android.view.ViewGroup;
 22 import android.view.ViewGroup.LayoutParams;
 23 import android.widget.Button;
 24 import android.widget.EditText;
 25 import android.widget.TextView;
 26 
 27 public class ToolFor9Ge 
 28 {
 29     // 缩放/ 裁剪图片
 30      public static Bitmap zoomImg(Bitmap bm, int newWidth ,int newHeight)
 31      { 
 32          // 获得图片的宽高
 33          int width = bm.getWidth();
 34          int height = bm.getHeight();
 35          // 计算缩放比例
 36          float scaleWidth = ((float) newWidth) / width;
 37          float scaleHeight = ((float) newHeight) / height;
 38          // 取得想要缩放的 matrix 参数
 39          Matrix matrix = new Matrix();
 40          matrix.postScale(scaleWidth, scaleHeight);
 41          // 得到新的图片
 42          Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
 43          return newbm;
 44      }
 45      
 46      // 判断有无网络链接
 47      public static boolean checkNetworkInfo(Context mContext) {
 48            ConnectivityManager conMan = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
 49            State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
 50            State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
 51            if (mobile == State.CONNECTED || mobile == State.CONNECTING)
 52               return true;
 53            if (wifi == State.CONNECTED || wifi == State.CONNECTING)
 54               return true;
 55            return false;
 56      }
 57      
 58      // 从路径获取文件名
 59      public static String getFileName(String pathandname){ 
 60          int start = pathandname.lastIndexOf("/");  
 61          int end = pathandname.lastIndexOf(".");  
 62          if(start != -1 && end != -1){  
 63              return pathandname.substring(start+1,end);    
 64          }else{  
 65              return null;  
 66          }             
 67      }
 68      
 69      // 通过路径生成 Base64 文件
 70      public static String getBase64FromPath(String path)
 71      {
 72          String base64 = "";
 73          try
 74          {
 75              File file = new File(path);
 76              byte[] buffer = new byte[(int) file.length() + 100];  
 77             @SuppressWarnings("resource")
 78             int length = new FileInputStream(file).read(buffer);  
 79              base64 = Base64.encodeToString(buffer, 0, length,  Base64.DEFAULT);
 80          }
 81          catch (IOException e) {
 82             e.printStackTrace();
 83         }
 84          return base64;
 85      }
 86      
 87      // 通过文件路径获取到 bitmap
 88      public static Bitmap getBitmapFromPath(String path, int w, int h) {
 89         BitmapFactory.Options opts = new BitmapFactory.Options();
 90         // 设置为ture只获取图片大小
 91         opts.inJustDecodeBounds = true;
 92         opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
 93         // 返回为空
 94         BitmapFactory.decodeFile(path, opts);
 95         int width = opts.outWidth;
 96         int height = opts.outHeight;
 97         float scaleWidth = 0.f, scaleHeight = 0.f;
 98         if (width > w || height > h) {
 99             // 缩放
100             scaleWidth = ((float) width) / w;
101             scaleHeight = ((float) height) / h;
102         }
103         opts.inJustDecodeBounds = false;
104         float scale = Math.max(scaleWidth, scaleHeight);
105         opts.inSampleSize = (int)scale;
106         WeakReference<Bitmap> weak = new WeakReference<Bitmap>(BitmapFactory.decodeFile(path, opts));
107         return Bitmap.createScaledBitmap(weak.get(), w, h, true);
108     }
109      
110      // 把 bitmap 转换成 base64
111      public static String getBase64FromBitmap(Bitmap bitmap, int bitmapQuality)
112      {
113          ByteArrayOutputStream bStream = new ByteArrayOutputStream();
114          bitmap.compress(CompressFormat.PNG, bitmapQuality, bStream);
115          byte[] bytes = bStream.toByteArray();
116          return Base64.encodeToString(bytes, Base64.DEFAULT);
117      }
118      
119      // 把 base64 转换成 bitmap
120      public static Bitmap getBitmapFromBase64(String string)
121      {
122          byte[] bitmapArray = null;
123          try {
124          bitmapArray = Base64.decode(string, Base64.DEFAULT);
125          } catch (Exception e) {
126          e.printStackTrace();
127          }
128          return BitmapFactory.decodeByteArray(bitmapArray, 0,bitmapArray.length);
129      }
130      
131      // 把 Stream 转换成 String
132      public static String convertStreamToString(InputStream is) {
133          BufferedReader reader = new BufferedReader(new InputStreamReader(is));
134             StringBuilder sb = new StringBuilder();
135             String line = null;
136 
137             try {
138                 while ((line = reader.readLine()) != null) {
139                     sb.append(line + "/n");
140                 }
141             } catch (IOException e) {
142                 e.printStackTrace();
143             } finally {
144                 try {
145                     is.close();
146                 } catch (IOException e) {
147                     e.printStackTrace();
148                 }
149             }
150             return sb.toString();    
151      }    
152      
153      // 修改整个界面所有控件的字体
154      public static void changeFonts(ViewGroup root,String path, Activity act) {  
155         // path 是字体路径
156          Typeface tf = Typeface.createFromAsset(act.getAssets(),path);  
157         for (int i = 0; i < root.getChildCount(); i++) {  
158             View v = root.getChildAt(i); 
159             if (v instanceof TextView) {  
160                ((TextView) v).setTypeface(tf);  
161             } else if (v instanceof Button) {  
162                ((Button) v).setTypeface(tf);  
163             } else if (v instanceof EditText) {  
164                ((EditText) v).setTypeface(tf);  
165             } else if (v instanceof ViewGroup) {  
166                changeFonts((ViewGroup) v, path,act);  
167             } 
168         }  
169      }
170      
171      // 修改整个界面所有控件的字体大小
172       public static void changeTextSize(ViewGroup root,int size, Activity act) {  
173          for (int i = 0; i < root.getChildCount(); i++) {  
174              View v = root.getChildAt(i);  
175              if (v instanceof TextView) {  
176                 ((TextView) v).setTextSize(size);
177              } else if (v instanceof Button) {  
178                 ((Button) v).setTextSize(size);
179              } else if (v instanceof EditText) {  
180                 ((EditText) v).setTextSize(size);  
181              } else if (v instanceof ViewGroup) {  
182                 changeTextSize((ViewGroup) v,size,act);  
183              }  
184          }  
185       }
186       
187       // 不改变控件位置,修改控件大小
188     public static void changeWH(View v,int W,int H)
189     {
190         LayoutParams params = (LayoutParams)v.getLayoutParams();
191         params.width = W;
192         params.height = H;
193         v.setLayoutParams(params);
194     }
195     
196     // 修改控件的高
197     public static void changeH(View v,int H)
198     {
199         LayoutParams params = (LayoutParams)v.getLayoutParams();
200         params.height = H;
201         v.setLayoutParams(params);
202     }
203         
204 }

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。