这篇文章是记录我们平时在android开发过程中,经常会用到的类型转换,主要包括String、byte[]、bitmap、inputstram、Drawable之间的转换,代码如下:
<span style="font-size:18px;">import java.io.BufferedReader;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
public class Demo {
* bitmap 转 byte[]数组
public byte[] bitmap2byteArray(Bitmap bitmap){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
byte[] bytes = baos.toByteArray();
return bytes;
* bitmap 转 inputstream
public InputStream bitmap2InputStream(Bitmap bitmap){
ByteArrayOutputStream baos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 100, baos);
InputStream is = new ByteArrayInputStream(baos.toByteArray());
return is;
* byte[]数组 转 bitmap
public Bitmap byteArray2Bitmap(byte[] bytes){
Bitmap bitmap = BitmapFactory.decodeByteArray(bytes, 0, bytes.length);
return bitmap;
* inputstream 转 bitmap
public Bitmap inputStream2Bitmap(InputStream is){
Bitmap bitmap = BitmapFactory.decodeStream(is);
return bitmap;
* Drawable 转 bitmap
public Bitmap drawable2Bitmap(Drawable img){
BitmapDrawable bd = (BitmapDrawable) img;
Bitmap bitmap = bd.getBitmap();
return bitmap;
* bitmap 转 Drawable
public Drawable bitmap2Drawable(Bitmap bitmap){
BitmapDrawable bd = new BitmapDrawable(bitmap);
Drawable img = bd;
return img;
* String 转 byte[]数组
public byte[] string2ByteArray(String str,String charset){
byte[] bytes = null;
if(charset == null){
bytes = str.getBytes();
}else{
try {
//如charset = "utf-8"
bytes = str.getBytes(charset);
} catch (Exception e) {
// TODO: handle exception
return bytes;
* String 转 inputstream
public InputStream string2InputStream(String str){
InputStream is = new ByteArrayInputStream(str.getBytes());
return is;
* inputstream 转 String 方法01
public String inputStream2String01(InputStream is) throws IOException{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = -1;
while((i=is.read()) != -1){
baos.write(i);
return baos.toString();
* inputstream 转 String 方法02
public String inputStream2String02(InputStream is) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
while((line=br.readLine()) != null){
sb.append(line+"\n");
return sb.toString();
* inputstream 转 String 方法03
public String inputSteam2String03(InputStream is) throws IOException{
StringBuilder sb = new StringBuilder();
byte[] b =new byte[1024];
for(int n; (n=is.read(b)) != -1;){
String s = new String(b, 0, n);
sb.append(s);
return sb.toString();
}</span>
这篇文章是记录我们平时在android开发过程中,经常会用到的类型转换,主要包括String、byte[]、bitmap、inputstram、Drawable之间的转换,代码如下:import java.io.BufferedReader;import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStrea
Kotlin被Google官方认为是
Android
开发的一级编程语言。今天,我将主要讲解,关于Kotlin的一些实用语法糖,主要包括:
范围使用:in、downTo、step、until
类型检查 &
转
换:is、智能
转
换、as
相等性:equals()、== 、 ===
1. 范围使用
主要用于表示范围,主要包括:in、downTo、step、until
* 1. in
* 作用:在...范围内
// 表示:若i在1-5范围内,则执行下面代码
// 注:闭区间,[1,5]
if (i in 1..5) {
pr
int
ln("i 在 1-5
2. java向native传递数组类型
3. java向native传递自定义java对象
4. java向native传递任意java对象(以向native传递ArrayList为例)
5. native向java传递数组类型
6. native向java传递字符串类型
7. native向java传递java对象
1、HttpUtils
Http网络工具类,主要包括httpGet、httpPost以及http参数相关方法,以httpGet为例:
static HttpResponse httpGet(HttpRequest request)
static HttpResponse httpGet(java.lang.
String
httpUrl)
static
String
httpGet
String
(
String
httpUrl)
包含以上三个方法,默认使用gzip压缩,使用bufferedReader提高读取速度。
HttpRequest中可以设置url、timeout、userAgent等其他http参数
HttpResponse中可以获取返回内容、http响应码、http过期时间(Cache-Control的max-age和expires)等
前两个方法可以进行高级参数设置及丰富内容返回,第三个方法可以简单的传入url获取返回内容,httpPost类似。更详细的设置可以直接使用HttpURLConnection或apache的HttpClient。
源码可见HttpUtils.java,更多方法及更详细参数介绍可见HttpUtils Api Guide。
2、DownloadManagerPro
Android
系统下载管理DownloadManager增强方法,可用于包括获取下载相关信息,如:
getStatusById(long) 得到下载状态
getDownloadBytes(long) 得到下载进度信息
getBytesAndStatus(long) 得到下载进度信息和状态
getFileName(long) 得到下载文件路径
getUri(long) 得到下载uri
getReason(long) 得到下载失败或暂停原因
getPausedReason(long) 得到下载暂停原因
getErrorCode(long) 得到下载错误码
源码可见DownloadManagerPro.java,更多方法及更详细参数介绍可见DownloadManagerPro Api Guide。关于
Android
DownManager使用可见DownManager Demo。
3、ShellUtils
Android
Shell工具类,可用于检查系统root权限,并在shell或root用户下执行shell命令。如:
checkRootPermission() 检查root权限
execCommand(
String
[] commands, boolean isRoot, boolean isNeedResultMsg) shell环境执行命令,第二个参数表示是否root权限执行
execCommand(
String
command, boolean isRoot) shell环境执行命令
源码可见ShellUtils.java,更多方法及更详细参数介绍可见ShellUtils Api Guide。关于静默安装可见apk-root权限静默安装。
4、PackageUtils
Android
包相关工具类,可用于(root)安装应用、(root)卸载应用、判断是否系统应用等,如:
install(Context,
String
) 安装应用,如果是系统应用或已经root,则静默安装,否则一般安装
uninstall(Context,
String
) 卸载应用,如果是系统应用或已经root,则静默卸载,否则一般卸载
isSystemApplication(Context,
String
) 判断应用是否为系统应用
源码可见PackageUtils.java,更多方法及更详细参数介绍可见ShellUtils Api Guide。关于静默安装可见apk-root权限静默安装。
5、PreferencesUtils
Android
SharedPreferences相关工具类,可用于方便的向SharedPreferences中读取和写入相关类型数据,如:
put
String
(Context,
String
,
String
) 保存
string
类型数据
put
Int
(Context,
String
,
int
) 保存
int
类型数据
get
String
(Context,
String
) 获取
string
类型数据
get
Int
(Context,
String
) 获取
int
类型数据
可通过修改PREFERENCE_NAME变量修改preference name
源码可见PreferencesUtils.java,更多方法及更详细参数介绍可见PreferencesUtils Api Guide。
6、JSONUtils
JSONUtils工具类,可用于方便的向Json中读取和写入相关类型数据,如:
String
get
String
(JSONObject jsonObject,
String
key,
String
defaultValue) 得到
string
类型value
String
get
String
(
String
jsonData,
String
key,
String
defaultValue) 得到
string
类型value
表示从json中读取某个
String
类型key的值
getMap(JSONObject jsonObject,
String
key) 得到map
getMap(
String
jsonData,
String
key) 得到map
表示从json中读取某个Map类型key的值
源码可见JSONUtils.java,更多方法及更详细参数介绍可见JSONUtils Api Guide。
7、FileUtils
文件工具类,可用于读写文件及对文件进行操作。如:
readFile(
String
filePath) 读文件
writeFile(
String
filePath,
String
content, boolean append) 写文件
getFileSize(
String
path) 得到文件大小
deleteFile(
String
path) 删除文件
源码可见FileUtils.java,更多方法及更详细参数介绍可见FileUtils Api Guide。
8、ResourceUtils
Android
Resource工具类,可用于从
android
资源目录的raw和assets目录读取内容,如:
geFileFromAssets(Context context,
String
fileName) 得到assets目录下某个文件内容
geFileFromRaw(Context context,
int
resId) 得到raw目录下某个文件内容
源码可见ResourceUtils.java,更多方法及更详细参数介绍可见ResourceUtils Api Guide。
9、
String
Utils
String
工具类,可用于常见字符串操作,如:
isEmpty(
String
str) 判断字符串是否为空或长度为0
isBlank(
String
str) 判断字符串是否为空或长度为0 或由空格组成
utf8Encode(
String
str) 以utf-8格式编码
capitalizeFirstLetter(
String
str) 首字母大写
源码可见
String
Utils.java,更多方法及更详细参数介绍可见
String
Utils Api Guide。
10、ParcelUtils
Android
Parcel工具类,可用于从parcel读取或写入特殊类型数据,如:
readBoolean(Parcel in) 从pacel中读取boolean类型数据
readHashMap(Parcel in, ClassLoader loader) 从pacel中读取map类型数据
writeBoolean(boolean b, Parcel out) 向parcel中写入boolean类型数据
writeHashMap(Map map, Parcel out,
int
flags) 向parcel中写入map类型数据
源码可见ParcelUtils.java,更多方法及更详细参数介绍可见ParcelUtils Api Guide。
11、RandomUtils
随机数工具类,可用于获取固定大小固定字符内的随机数,如:
getRandom(char[] sourceChar,
int
length) 生成随机字符串,所有字符均在某个字符串内
getRandomNumbers(
int
length) 生成随机数字
源码可见RandomUtils.java,更多方法及更详细参数介绍可见RandomUtils Api Guide。
12、ArrayUtils
数组工具类,可用于数组
常用
操作,如:
isEmpty(V[] sourceArray) 判断数组是否为空或长度为0
getLast(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到数组中某个元素前一个元素,isCircle表示是否循环
getNext(V[] sourceArray, V value, V defaultValue, boolean isCircle) 得到数组中某个元素下一个元素,isCircle表示是否循环
源码可见ArrayUtils.java,更多方法及更详细参数介绍可见ArrayUtils Api Guide。
13、ImageUtils
图片工具类,可用于
Bitmap
, byte array,
Drawable
之间进行
转
换以及图片缩放,目前功能薄弱,后面会进行增强。如:
bitmap
To
Drawable
(
Bitmap
b) bimap
转
换为
drawable
drawable
To
Bitmap
(
Drawable
d)
drawable
转
换为
bitmap
drawable
ToByte(
Drawable
d)
drawable
转
换为byte
scaleImage(
Bitmap
org, float scaleWidth, float scaleHeight) 缩放图片
源码可见ImageUtils.java,更多方法及更详细参数介绍可见ImageUtils Api Guide。
14、ListUtils
List工具类,可用于List
常用
操作,如:
isEmpty(List sourceList) 判断List是否为空或长度为0
join(List list,
String
separator) List
转
换为字符串,并以固定分隔符分割
addDistinctEntry(List sourceList, V entry) 向list中添加不重复元素
源码可见ListUtils.java,更多方法及更详细参数介绍可见ListUtils Api Guide。
15、MapUtils
Map工具类,可用于Map
常用
操作,如:
isEmpty(Map sourceMap) 判断map是否为空或长度为0
parseKeyAndValueToMap(
String
source,
String
keyAndValueSeparator,
String
keyAndValuePairSeparator, boolean ignoreSpace) 字符串解析为map
toJson(Map map) map
转
换为json格式
源码可见MapUtils.java,更多方法及更详细参数介绍可见MapUtils Api Guide。
16、ObjectUtils
Object工具类,可用于Object
常用
操作,如:
isEquals(Object actual, Object expected) 比较两个对象是否相等
compare(V v1, V v2) 比较两个对象大小
transform
Int
Array(
int
[] source)
Int
eger 数组
转
换为
int
数组
源码可见ObjectUtils.java,更多方法及更详细参数介绍可见ObjectUtils Api Guide。
17、SerializeUtils
序列化工具类,可用于序列化对象到文件或从文件反序列化对象,如:
deserialization(
String
filePath) 从文件反序列化对象
serialization(
String
filePath, Object obj) 序列化对象到文件
源码可见SerializeUtils.java,更多方法及更详细参数介绍可见SerializeUtils Api Guide。
18、SystemUtils
系统信息工具类,可用于得到线程池合适的大小,目前功能薄弱,后面会进行增强。如:
getDefaultThreadPoolSize() 得到跟系统配置相符的线程池大小
源码可见SystemUtils.java,更多方法及更详细参数介绍可见SystemUtils Api Guide。
19、TimeUtils
时间工具类,可用于时间相关操作,如:
getCurrentTimeInLong() 得到当前时间
getTime(long timeInMillis, SimpleDateFormat dateFormat) 将long
转
换为固定格式时间字符串
源码可见TimeUtils.java,更多方法及更详细参数介绍可见TimeUtils Api Guide。
R.
drawable
.xx 是特殊的
int
型,存入数据库需要处理
int
bgid=this.getResources().getIdentifier("date", "
drawable
", getPackageName());if(R.drawabke.date==bgid){setbackground(bg.id);}是不是很简单,可以存入数据库!
转
载于:htt...
Matrix
转
换就行了。然后需要将彩色图
转
化为灰度图,我的个天啊,这玩意以前用opencl做过简单的一匹,现在我打算用代码实现,所以翻了很多博客,这里做一个记录,以后好复制。
色彩图
转
化为灰度图方法有三
加权法 GRAY==0.3*R+0.59*G+0.11*B
均值法GRAY==(R+G+B)/3
最大值法 max(R,G,B)
var colorToGrayscale: (
Bitmap
) -> ...
获取本地图片
Bitmap
decodeResource =
Bitmap
Factory.decodeResource(context.getResources(), R.
drawable
.ic_default_user_bg_34);
把本地的
int
类型的图片
转
换成
drawable
Drawable
drawable
= context.getResources().getDr
import java.io.File;
import java.io.File
InputStream
;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.In