1、缩放/ 裁剪图片;

2、判断有无网络链接;

3、从路径获取文件名;

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

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

6、把 bitmap 转换成 base64;

7、把 base64 转换成 bitmap;

8、把 Stream 转换成 String;

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

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

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

12、修改控件的高。

 import java.io.BufferedReader;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.ref.WeakReference; import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.Typeface;
import android.net.ConnectivityManager;
import android.net.NetworkInfo.State;
import android.util.Base64;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView; public class ToolFor9Ge
{
// 缩放/ 裁剪图片
public static Bitmap zoomImg(Bitmap bm, int newWidth ,int newHeight)
{
// 获得图片的宽高
int width = bm.getWidth();
int height = bm.getHeight();
// 计算缩放比例
float scaleWidth = ((float) newWidth) / width;
float scaleHeight = ((float) newHeight) / height;
// 取得想要缩放的 matrix 参数
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
// 得到新的图片
Bitmap newbm = Bitmap.createBitmap(bm, 0, 0, width, height, matrix, true);
return newbm;
} // 判断有无网络链接
public static boolean checkNetworkInfo(Context mContext) {
ConnectivityManager conMan = (ConnectivityManager) mContext.getSystemService(Context.CONNECTIVITY_SERVICE);
State mobile = conMan.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).getState();
State wifi = conMan.getNetworkInfo(ConnectivityManager.TYPE_WIFI).getState();
if (mobile == State.CONNECTED || mobile == State.CONNECTING)
return true;
if (wifi == State.CONNECTED || wifi == State.CONNECTING)
return true;
return false;
} // 从路径获取文件名
public static String getFileName(String pathandname){
int start = pathandname.lastIndexOf("/");
int end = pathandname.lastIndexOf(".");
if(start != -1 && end != -1){
return pathandname.substring(start+1,end);
}else{
return null;
}
} // 通过路径生成 Base64 文件
public static String getBase64FromPath(String path)
{
String base64 = "";
try
{
File file = new File(path);
byte[] buffer = new byte[(int) file.length() + 100];
@SuppressWarnings("resource")
int length = new FileInputStream(file).read(buffer);
base64 = Base64.encodeToString(buffer, 0, length, Base64.DEFAULT);
}
catch (IOException e) {
e.printStackTrace();
}
return base64;
} // 通过文件路径获取到 bitmap
public static Bitmap getBitmapFromPath(String path, int w, int h) {
BitmapFactory.Options opts = new BitmapFactory.Options();
// 设置为ture只获取图片大小
opts.inJustDecodeBounds = true;
opts.inPreferredConfig = Bitmap.Config.ARGB_8888;
// 返回为空
BitmapFactory.decodeFile(path, opts);
int width = opts.outWidth;
int height = opts.outHeight;
float scaleWidth = 0.f, scaleHeight = 0.f;
if (width > w || height > h) {
// 缩放
scaleWidth = ((float) width) / w;
scaleHeight = ((float) height) / h;
}
opts.inJustDecodeBounds = false;
float scale = Math.max(scaleWidth, scaleHeight);
opts.inSampleSize = (int)scale;
WeakReference<Bitmap> weak = new WeakReference<Bitmap>(BitmapFactory.decodeFile(path, opts));
return Bitmap.createScaledBitmap(weak.get(), w, h, true);
} // 把 bitmap 转换成 base64
public static String getBase64FromBitmap(Bitmap bitmap, int bitmapQuality)
{
ByteArrayOutputStream bStream = new ByteArrayOutputStream();
bitmap.compress(CompressFormat.PNG, bitmapQuality, bStream);
byte[] bytes = bStream.toByteArray();
return Base64.encodeToString(bytes, Base64.DEFAULT);
} // 把 base64 转换成 bitmap
public static Bitmap getBitmapFromBase64(String string)
{
byte[] bitmapArray = null;
try {
bitmapArray = Base64.decode(string, Base64.DEFAULT);
} catch (Exception e) {
e.printStackTrace();
}
return BitmapFactory.decodeByteArray(bitmapArray, 0,bitmapArray.length);
} // 把 Stream 转换成 String
public static String convertStreamToString(InputStream is) {
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null; try {
while ((line = reader.readLine()) != null) {
sb.append(line + "/n");
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
return sb.toString();
} // 修改整个界面所有控件的字体
public static void changeFonts(ViewGroup root,String path, Activity act) {
// path 是字体路径
Typeface tf = Typeface.createFromAsset(act.getAssets(),path);
for (int i = 0; i < root.getChildCount(); i++) {
View v = root.getChildAt(i);
if (v instanceof TextView) {
((TextView) v).setTypeface(tf);
} else if (v instanceof Button) {
((Button) v).setTypeface(tf);
} else if (v instanceof EditText) {
((EditText) v).setTypeface(tf);
} else if (v instanceof ViewGroup) {
changeFonts((ViewGroup) v, path,act);
}
}
} // 修改整个界面所有控件的字体大小
public static void changeTextSize(ViewGroup root,int size, Activity act) {
for (int i = 0; i < root.getChildCount(); i++) {
View v = root.getChildAt(i);
if (v instanceof TextView) {
((TextView) v).setTextSize(size);
} else if (v instanceof Button) {
((Button) v).setTextSize(size);
} else if (v instanceof EditText) {
((EditText) v).setTextSize(size);
} else if (v instanceof ViewGroup) {
changeTextSize((ViewGroup) v,size,act);
}
}
} // 不改变控件位置,修改控件大小
public static void changeWH(View v,int W,int H)
{
LayoutParams params = (LayoutParams)v.getLayoutParams();
params.width = W;
params.height = H;
v.setLayoutParams(params);
} // 修改控件的高
public static void changeH(View v,int H)
{
LayoutParams params = (LayoutParams)v.getLayoutParams();
params.height = H;
v.setLayoutParams(params);
} }

Android 开发工具类 11_ToolFor9Ge的更多相关文章

  1. Android开发工具类

    7种无须编程的DIY开发工具 你知道几个? 现如今,各种DIY开发工具不断的出现,使得企业和个人在短短几分钟内就能完成应用的创建和发布,大大节省了在时间和资金上的投入.此外,DIY工 具的出现,也帮助 ...

  2. android开发工具类之获得WIFI IP地址或者手机网络IP

    有的时候我们需要获得WIFI的IP地址获得手机网络的IP地址,这是一个工具类,专门解决这个问题,这里需要两个权限: <uses-permission android:name="and ...

  3. android开发工具类总结(一)

    一.日志工具类 Log.java public class L { private L() { /* 不可被实例化 */ throw new UnsupportedOperationException ...

  4. Android 开发工具类 35_PatchUtils

    增量更新工具类[https://github.com/cundong/SmartAppUpdates] import java.io.File; import android.app.Activity ...

  5. Android 开发工具类 13_ SaxService

    网络 xml 解析方式 package com.example.dashu_saxxml; import java.io.IOException; import java.io.InputStream ...

  6. Android 开发工具类 06_NetUtils

    跟网络相关的工具类: 1.判断网络是否连接: 2.判断是否是 wifi 连接: 3.打开网络设置界面: import android.app.Activity; import android.cont ...

  7. Android 开发工具类 03_HttpUtils

    Http 请求的工具类: 1.异步的 Get 请求: 2.异步的 Post 请求: 3.Get 请求,获得返回数据: 4.向指定 URL 发送 POST方法的请求. import java.io.Bu ...

  8. Android 开发工具类 19_NetworkStateReceiver

    检测网络状态改变类: 1.注册网络状态广播: 2.检查网络状态: 3.注销网络状态广播: 4.获取当前网络状态,true为网络连接成功,否则网络连接失败: 5.注册网络连接观察者: 6.注销网络连接观 ...

  9. Android 开发工具类 27_多线程下载大文件

    多线程下载大文件时序图 FileDownloader.java package com.wangjialin.internet.service.downloader; import java.io.F ...

随机推荐

  1. 关于FIR的modelsim

    (1)FIR ip核仿真 (2)FIR 多通道应用 (3)多通道fir ip核需要注意的复位问题 =================================================== ...

  2. 可视化iOS应用程序开发的6个Xcode小技巧

    FIXME 该标签用来提醒你代码中存在稍后某个时间需要修改的部分.(编辑注:网络上有一些可以用来收集项目中`TODO`和`FIXME`标签的辅助插件,比如XToDo https://github.co ...

  3. Structure From Motion(二维运动图像中的三维重建)

    SfM(Structure from Motion)简介 Structure from motion (SfM) is a photogrammetric range imaging techniqu ...

  4. pytest 常用命令行选项(一)

    pytest有丰富的命令行选项,以满足不同的需要,下面对常用的命令行选项作下简单介绍.  上文已经使用过-v选项,还有很多选项,你可以使用pytest --help查看全部选项.如下图: 1.--co ...

  5. 团队合作项目—(GG队)

    团队展示 一.队名:GG 二.队员信息 队员 学号 叶尚文(队长) 3116008802 蔡晓晴 3216008808 杜婷萱 3216008809 龙剑初 3116004647 于泽浩 311600 ...

  6. WPF核心对象模型-类图和解析

    DispatcherObject是根基类,通过继承该类,可以得到访问创建该对象的UI线程的Dispatcher对象的能力.通过Dispatcher对象,可以将代码段合并入该UI线程执行. Depend ...

  7. 程序猿CET4和CET6考试攻略

    写在前面: 学习一种语言是一个长期的过程,而且需要合适的语言环境,不是一朝一夕可以熟练掌握的,但是如果单纯地只是为了通过考试的话,就另当别论了 声明:本篇攻略纯属经验之谈,绝非任何性质的广告,仅供参考 ...

  8. vs web项目远程发布到IIS

    一.下载安装 IIS安装管理服务,这里不赘述,安装完后显示如下(装完刷新一下或者重新打开iis) 下载webploy,安装的时候要选中远程功能,或者选择完全安装,否则会因为没有远程模块导致连接失败(注 ...

  9. 5.WebAPI的Filter

    1.WebApi的Filter介绍: 大家知道什么是AOP(aspect oriented programming)吗?它是可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添 ...

  10. Day 33 Socket编程.

    套接字 (socket)处使用 基于TCP 协议的套接字 TCP 是基于链接的 ,服务器端和客户端启动没有顺序. 服务器端设置: import socket sk =socket.socket() # ...