zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    FrameBuffer系列 之 一点资源
    FrameBuffer系列 之 显示图片
    FrameBuffer系列 之 相关结构与结构体
    FrameBuffer系列 之 介绍
    FrameBuffer系列 之 简单编程
    程序员五大层次,你属于哪一层?
    提高编程效率的14件事
    GTK简单了解记录
    __read_mostly变量含义
    [系统启动]Printk与sched_clock_init的一点分析
  • 原文地址:https://www.cnblogs.com/renzimu/p/4535736.html
Copyright © 2011-2022 走看看