android 常用方法集合
private?static?Contextcontext;
privatestatic?Displaydisplay;
private?static?String?TAG?=?"MyTools";
public?MyTools(Context context) {
MyTools.context?= context;
}
publicstaticint?getScreenHeight()// 獲取屏幕高度
{
if?(context?==null) {
Log.e("hck",TAG?+"? getScreenHeight: "?+"context 不能為空");
return?0;
}
display?= ((Activity)context).getWindowManager().getDefaultDisplay();
return?display.getHeight();
}
publicstaticint?getScreenWidth()// 獲取屏幕寬度
{
if?(context?==null) {
Log.e("hck",TAG?+"? getScreenHeight: "?+"context 不能為空");
return?0;
}
display?= ((Activity)context).getWindowManager().getDefaultDisplay();
return?display.getWidth();
}
public?static?String getSDK() {
return?android.os.Build.VERSION.SDK;// SDK號(hào)
}
publicstatic?String getModel()// 手機(jī)型號(hào)
{
return?android.os.Build.MODEL;
}
publicstatic?String getRelease()// android系統(tǒng)版本號(hào)
{
return?android.os.Build.VERSION.RELEASE;
}
publicstatic?String getImei(Context context)// 獲取手機(jī)身份證imei
{
TelephonyManager telephonyManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
return?telephonyManager.getDeviceId();
}
publicstatic?String getVerName(Context context) {// 獲取版本名字
try?{
String pkName = context.getPackageName();
String versionName = context.getPackageManager().getPackageInfo(
pkName, 0).versionName;
return?versionName;
}?catch?(Exception e) {
}
returnnull;
}
publicstaticint?getVerCode(Context context) {// 獲取版本號(hào)
String pkName = context.getPackageName();
try?{
int?versionCode = context.getPackageManager().getPackageInfo(
pkName, 0).versionCode;
return?versionCode;
}?catch?(NameNotFoundException e) {
e.printStackTrace();
}
return?0;
}
publicstaticboolean?isNetworkAvailable(Context context) {// 判斷網(wǎng)絡(luò)連接是否可用
// 獲取手機(jī)所有連接管理對象(包括對wi-fi,net等連接的管理)
ConnectivityManager connectivity = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
if?(connectivity ==null)
returnfalse;
// 獲取網(wǎng)絡(luò)連接管理的對象
NetworkInfo info = connectivity.getActiveNetworkInfo();
if?(info ==null?|| !info.isConnected())
returnfalse;
// 判斷當(dāng)前網(wǎng)絡(luò)是否已經(jīng)連接
return?(info.getState() == NetworkInfo.State.CONNECTED);
}
publicstatic?String trim(String str,int?limit) {// 字符串超出給定文字則截取
String mStr = str.trim();
return?mStr.length() > limit ? mStr.substring(0, limit) : mStr;
}
publicstatic?String getTel(Context context) {// 獲取手機(jī)號(hào)碼,很多手機(jī)獲取不到
TelephonyManager telManager = (TelephonyManager) context
.getSystemService(Context.TELEPHONY_SERVICE);
return?telManager.getLine1Number();
}
publicstatic?String getMac(Context context) {// 獲取時(shí)機(jī)mac地址
final?WifiManager wifi = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
if?(wifi !=null) {
WifiInfo info = wifi.getConnectionInfo();
if?(info.getMacAddress() !=null) {
return?info.getMacAddress().toLowerCase(Locale.ENGLISH)
.replace(":","");
}
return"";
}
return"";
}
/**
* 將 像素 轉(zhuǎn)換成dp
*?
* @param pxValue
*? ? ? ? ? ? 像素
* @returndp
*/
public?static?int?px2dip(int?pxValue) {
final?float?scale =?context.getResources().getDisplayMetrics().density;
return?(int) (pxValue / scale + 0.5f);
}
/**
* 將 畫素 轉(zhuǎn)換成sp
*?
* @param pixel
* @returnsp
*/
publicstaticint?px2sp(int?px) {
float?scaledDensity =context.getResources().getDisplayMetrics().scaledDensity;
return?(int) (px / scaledDensity);
}
/**
* 將 dip 轉(zhuǎn)換成畫素px
*?
* @param dipValue
*? ? ? ? ? ? dip 像素的值
* @return 畫素px
*/
public?static?int?dip2px(float?dipValue) {
final?float?scale =?context.getResources().getDisplayMetrics().density;
return?(int) (dipValue * scale + 0.5f);
}
public?static?int[][] getViewsPosition(List<View> views) {
int[][] location =newint[views.size()][2];
for?(int?index = 0; index < views.size(); index++) {
views.get(index).getLocationOnScreen(location[index]);
}
return?location;
}
/**
* 傳入一個(gè)view,返回一個(gè)int數(shù)組來存放 view在手機(jī)屏幕上左上角的絕對坐標(biāo)
*?
* @param views
*? ? ? ? ? ? 傳入的view
* @return 返回int型數(shù)組,location[0]表示x,location[1]表示y
*/
public?static?int[] getViewPosition(View view) {
int[] location =newint[2];
view.getLocationOnScreen(location);
return?location;
}
/**
* onTouch界面時(shí)指尖在views中的哪個(gè)view當(dāng)中
*?
* @param event
*? ? ? ? ? ?ontouch事件
* @param views
*? ? ? ? ? ? view list
* @return view
*/
public?static?View getOnTouchedView(MotionEvent event, List<View> views) {
int[][] location = getViewsPosition(views);
for?(int?index = 0; index < views.size(); index++) {
if?(event.getRawX() > location[index][0]
&& event.getRawX() < location[index][0]
+ views.get(index).getWidth()
&& event.getRawY() > location[index][1]
&& event.getRawY() < location[index][1]
+ views.get(index).getHeight()) {
return?views.get(index);
}
}
returnnull;
}
/**
* 將傳進(jìn)的圖片存儲(chǔ)在手機(jī)上,并返回存儲(chǔ)路徑
*?
* @param photo
*? ? ? ? ? ? Bitmap 類型,傳進(jìn)的圖片
* @return String 返回存儲(chǔ)路徑
*/
public?static?String savePic(Bitmap photo, String name, String path) {
ByteArrayOutputStream baos =?new?ByteArrayOutputStream();?// 創(chuàng)建一個(gè)
//?outputstream
// 來讀取文件流
photo.compress(Bitmap.CompressFormat.PNG, 100, baos);// 把 bitmap 的圖片轉(zhuǎn)換成
//?jpge
// 的格式放入輸出流中
byte[] byteArray = baos.toByteArray();
String saveDir = Environment.getExternalStorageDirectory()
.getAbsolutePath();
File dir =?new?File(saveDir +"/"?+ path);// 定義一個(gè)路徑
if?(!dir.exists()) {// 如果路徑不存在,創(chuàng)建路徑
dir.mkdir();
}
File file =?new?File(saveDir, name +".png");// 定義一個(gè)文件
if?(file.exists())
file.delete();?// 刪除原來有此名字文件,刪除
try?{
file.createNewFile();
FileOutputStream fos;
fos =?new?FileOutputStream(file);// 通過 FileOutputStream 關(guān)聯(lián)文件
BufferedOutputStream bos =?new?BufferedOutputStream(fos);?// 通過?bos
// 往文件里寫東西
bos.write(byteArray);
bos.close();
}?catch?(FileNotFoundException e) {
e.printStackTrace();
}?catch?(IOException e) {
e.printStackTrace();
}
return?file.getPath();
}
/**
* 回收 bitmap 減小系統(tǒng)占用的資源消耗
*/
public?static?void?destoryBimap(Bitmap photo) {
if?(photo !=null?&& !photo.isRecycled()) {
photo.recycle();
photo =?null;
}
}
/**
* 將輸入字串做 md5 編碼
*?
* @param s
*? ? ? ? ? ? : 欲編碼的字串
* @return 編碼後的字串, 如失敗, 返回 ""
*/
public?static?String md5(String s) {
try?{
// Create MD5 Hash
MessageDigest digest = java.security.MessageDigest
.getInstance("MD5");
digest.update(s.getBytes("UTF-8"));
byte?messageDigest[] = digest.digest();
// Create Hex String
StringBuffer hexString =?new?StringBuffer();
for?(byte?b : messageDigest) {
if?((b & 0xFF) < 0x10)
hexString.append("0");
hexString.append(Integer.toHexString(b & 0xFF));
}
return?hexString.toString();
}?catch?(NoSuchAlgorithmException e) {
return"";
}?catch?(UnsupportedEncodingException e) {
return"";
}
}
publicstaticboolean?isNumber(char?c) {// 是否是數(shù)字
boolean?isNumer =false;
if?(c >=?'0'?&& c <=?'9') {
isNumer =?true;
}
return?isNumer;
}
publicstaticboolean?isEmail(String strEmail) {// 是否是正確的郵箱地址
String checkemail ="^([a-z0-9A-Z]+[-|\\.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
Pattern pattern = Pattern.compile(checkemail);
Matcher matcher = pattern.matcher(strEmail);
return?matcher.matches();
}
publicstaticboolean?isNull(String string)// 字符串是否為空
{
if?(null?== string ||"".equals(string)) {
returnfalse;
}
returntrue;
}
publicstaticboolean?isLenghtOk(String string,int?max,int?min)// 字符串長度檢測
{
if?(null?!= string) {
if?(string.length() > max || string.length() < min) {
returnfalse;
}
}
returntrue;
}
publicstaticboolean?isLenghtOk(String string,int?max)// 字符串長度是否
{
if?(null?!= string) {
if?(string.length() > max) {
returnfalse;
}
}
returntrue;
}
//用一種外部格式的字體,字體文件放在assets下面的fonts下面,名字叫whsn.ttf
獲取字體樣式:Typeface?tencentTypeface=Typeface.createFromAsset(this.getAssets(), "fonts/whsn.ttf")
使用
textView.setTypeface(tencentTypeface);
/**
*activity管理類,保證應(yīng)用退出后,銷毀所有創(chuàng)建的activity
**/
/**
?* 應(yīng)用程序Activity管理類:用于Activity管理和應(yīng)用程序退出
?*?@author?liux?(http://my.oschina.net/liux)
?*?@version?1.0
?*?@created?2012-3-21
?*/
public?class?AppManager {
private?static?Stack<Activity>?activityStack;
private?static?AppManager?instance;
private?AppManager(){}
/**
* 單一實(shí)例
*/
public?static?AppManager getAppManager(){
if(instance==null){
instance=new?AppManager();
}
returninstance;
}
/**
* 添加Activity到堆棧
*/
public?void?addActivity(Activity activity){
if(activityStack==null){
activityStack=new?Stack<Activity>();
}
activityStack.add(activity);
}
/**
* 獲取當(dāng)前Activity(堆棧中最后一個(gè)壓入的)
*/
public?Activity currentActivity(){
Activity activity=activityStack.lastElement();
return?activity;
}
/**
* 結(jié)束當(dāng)前Activity(堆棧中最后一個(gè)壓入的)
*/
public?void?finishActivity(){
Activity activity=activityStack.lastElement();
finishActivity(activity);
}
/**
* 結(jié)束指定的Activity
*/
public?void?finishActivity(Activity activity){
if(activity!=null){
activityStack.remove(activity);
activity.finish();
activity=null;
}
}
/**
* 結(jié)束指定類名的Activity
*/
public?void?finishActivity(Class<?> cls){
for?(Activity activity :activityStack) {
if(activity.getClass().equals(cls) ){
finishActivity(activity);
}
}
}
/**
* 結(jié)束所有Activity
*/
public?void?finishAllActivity(){
for?(int?i = 0, size =activityStack.size(); i < size; i++){
? ? ? ? ? ??if?(null?!=activityStack.get(i)){
? ? ? ? ? ??activityStack.get(i).finish();
? ? ? ? ? ? }
? ? }
activityStack.clear();
}
/**
* 退出應(yīng)用程序
*/
public?void?AppExit(Context context) {
try?{
finishAllActivity();
ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);
activityMgr.restartPackage(context.getPackageName());
System.exit(0);
}?catch?(Exception e) {}
}
}
//字符串相關(guān)工具類
private?finalstatic?ThreadLocal<SimpleDateFormat>dateFormater?=new?ThreadLocal<SimpleDateFormat>() {
@Override
protected?SimpleDateFormat initialValue() {
return?new?SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
}
};
private?final?static?ThreadLocal<SimpleDateFormat>dateFormater2?=new?ThreadLocal<SimpleDateFormat>() {
@Override
protected?SimpleDateFormat initialValue() {
return?new?SimpleDateFormat("yyyy-MM-dd");
}
};
/**
* 將字符串轉(zhuǎn)位日期類型
*?@param?sdate
*?@return
*/
public?static?Date toDate(String sdate) {
try?{
return?dateFormater.get().parse(sdate);
}?catch?(ParseException e) {
returnnull;
}
}
/**
* 以友好的方式顯示時(shí)間
*?@param?sdate
*?@return
*/
public?static?String friendly_time(String sdate) {
Date time = toDate(sdate);
if(time ==null) {
return"Unknown";
}
String ftime =?"";
Calendar cal = Calendar.getInstance();
//判斷是否是同一天
String curDate =?dateFormater2.get().format(cal.getTime());
String paramDate =?dateFormater2.get().format(time);
if(curDate.equals(paramDate)){
int?hour = (int)((cal.getTimeInMillis() - time.getTime())/3600000);
if(hour == 0)
ftime = Math.max((cal.getTimeInMillis() - time.getTime()) / 60000,1)+"分鐘前";
else?
ftime = hour+"小時(shí)前";
return?ftime;
}
long?lt = time.getTime()/86400000;
long?ct = cal.getTimeInMillis()/86400000;
int?days = (int)(ct - lt);
if(days == 0){
int?hour = (int)((cal.getTimeInMillis() - time.getTime())/3600000);
if(hour == 0)
ftime = Math.max((cal.getTimeInMillis() - time.getTime()) / 60000,1)+"分鐘前";
else?
ftime = hour+"小時(shí)前";
}
else?if(days == 1){
ftime =?"昨天";
}
else?if(days == 2){
ftime =?"前天";
}
else?if(days > 2 && days <= 10){?
ftime = days+"天前";
}
else?if(days > 10){
ftime =?dateFormater2.get().format(time);
}
return?ftime;
}
/**
* 判斷給定字符串時(shí)間是否為今日
*?@param?sdate
*?@return?boolean
*/
public?static?boolean?isToday(String sdate){
boolean?b =false;
Date time = toDate(sdate);
Date today =?new?Date();
if(time !=null){
String nowDate =?dateFormater2.get().format(today);
String timeDate =?dateFormater2.get().format(time);
if(nowDate.equals(timeDate)){
b =?true;
}
}
return?b;
}
/**
* 判斷給定字符串是否空白串。
* 空白串是指由空格、制表符、回車符、換行符組成的字符串
* 若輸入字符串為null或空字符串,返回true
*?@param?input
*?@return?boolean
*/
public?static?boolean?isEmpty( String input )?
{
if?( input ==null?||"".equals( input ) )
returntrue;
for?(?int?i = 0; i < input.length(); i++ )?
{
char?c = input.charAt( i );
if?( c !=' '?&& c !='\t'?&& c !='\r'?&& c !='\n'?)
{
returnfalse;
}
}
returntrue;
}
/**
* 判斷是不是一個(gè)合法的電子郵件地址
*?@param?email
*?@return
*/
public?static?boolean?isEmail(String email){
if(email ==null?|| email.trim().length()==0)?
returnfalse;
? ??returnemailer.matcher(email).matches();
}
/**
* 字符串轉(zhuǎn)整數(shù)
*?@param?str
*?@param?defValue
*?@return
*/
public?static?int?toInt(String str,?int?defValue) {
try{
return?Integer.parseInt(str);
}catch(Exception e){}
return?defValue;
}
/**
* 對象轉(zhuǎn)整數(shù)
*?@param?obj
*?@return?轉(zhuǎn)換異常返回 0
*/
public?static?int?toInt(Object obj) {
if(obj==null)return?0;
return?toInt(obj.toString(),0);
}
/**
* 對象轉(zhuǎn)整數(shù)
*?@param?obj
*?@return?轉(zhuǎn)換異常返回 0
*/
public?static?long?toLong(String obj) {
try{
return?Long.parseLong(obj);
}catch(Exception e){}
return?0;
}
/**
* 字符串轉(zhuǎn)布爾值
*?@param?b
*?@return?轉(zhuǎn)換異常返回 false
*/
public?static?boolean?toBool(String b) {
try{
return?Boolean.parseBoolean(b);
}catch(Exception e){}
returnfalse;
}
/**
* 獲取當(dāng)前網(wǎng)絡(luò)類型
* @return 0:沒有網(wǎng)絡(luò) ? 1:WIFI網(wǎng)絡(luò) ? 2:WAP網(wǎng)絡(luò)? ? 3:NET網(wǎng)絡(luò)
*/
public?int?getNetworkType() {
int?netType = 0;
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();
if?(networkInfo ==null) {
return?netType;
}
int?nType = networkInfo.getType();
if?(nType == ConnectivityManager.TYPE_MOBILE) {
String extraInfo = networkInfo.getExtraInfo();
if(!StringUtils.isEmpty(extraInfo)){
if?(extraInfo.toLowerCase().equals("cmnet")) {
netType =?NETTYPE_CMNET;
}?else?{
netType =?NETTYPE_CMWAP;
}
}
}?else?if?(nType == ConnectivityManager.TYPE_WIFI) {
netType =?NETTYPE_WIFI;
}
return?netType;
}
//啟動(dòng)一個(gè)已安裝應(yīng)用(知道包名和入口activity)
ComponentName componentName=new?ComponentName("應(yīng)用的包名","應(yīng)用入口activity");?
//ComponentName componentName=new?ComponentName("com.hck.test",?"com.hck.test.MainActivity");
?? ? ? ? Intent intent=new?Intent();
?? ? ? ? intent.setComponent(componentName);
?? ? ? ? startActivity(intent);
?// 獲取系統(tǒng)內(nèi)的所有程序信息
? Intent mainintent =?new?Intent(Intent.ACTION_MAIN,?null);
? mainintent.addCategory(Intent.CATEGORY_LAUNCHER);
? List<PackageInfo> ? packageinfo =?this.getPackageManager().getInstalledPackages(0);
//獲取meta-data 里面的值
public static String getMetaValue(Context context, String metaKey) {
??Bundle metaData = null;
??String apiKey = null;
??if (context == null || metaKey == null) {
???return null;
??}
??try {
???ApplicationInfo ai = context.getPackageManager()
?????.getApplicationInfo(context.getPackageName(),
???????PackageManager.GET_META_DATA);
???if (null != ai) {
????metaData = ai.metaData;
???}
???if (null != metaData) {
????apiKey = metaData.getString(metaKey);
???}
??} catch (NameNotFoundException e) {
??}
??
??return apiKey;
?}
?
//? 連續(xù)點(diǎn)擊2次退出程序
if(event.getAction() == KeyEvent.ACTION_DOWN && KeyEvent.KEYCODE_BACK == keyCode) {
????long currentTime = System.currentTimeMillis();
????if((currentTime-touchTime)>=waitTime) {
?????Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show();
?????touchTime = currentTime;
?????return true;
????}else {
?????AppManager.getAppManager().appExit();
?????finish();
?????return false;
????}
????
???}
?? return true;
//實(shí)現(xiàn)打電話
Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+phoneNumber));??
??????? this.startActivity(intent);
總結(jié)
以上是生活随笔為你收集整理的android 常用方法集合的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在android C/C++ nativ
- 下一篇: JNI设置C++与java的结合(2)