国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 系統(tǒng) > Android > 正文

android 一些工具類匯總

2019-12-12 05:40:53
字體:
供稿:網(wǎng)友

一 Paint ,Canvas

public class drawView extends View{  private Paint paint1;  public drawView(Context context,AttributeSet set ){    super(context,set);  }       public void onDraw(Canvas canvas){        super.onDraw(canvas);        //new 一個(gè)畫筆對(duì)象    paint1= new Paint();    canvas.drawColor(Color.TRANSPARENT);    //給畫筆設(shè)置 屬性    paint1.setAntiAlias(true);    paint1.setColor(Color.GRAY);    paint1.setStyle(Paint.Style.FILL);    paint1.setStrokeWidth(3);     //畫一個(gè)圓    //canvas.drawCircle(arg0, arg1, arg2, arg3);    canvas.drawCircle(10, 10, 5, paint1);    }}

二 AsyncImageTask

  /*   * //默認(rèn)開啟的線程數(shù)為128條如果超過128條會(huì)放進(jìn)隊(duì)列進(jìn)行排隊(duì)    //繼承AsyncTask時(shí)指定三個(gè)參數(shù)第一個(gè)為要傳入的參數(shù)類型 第二個(gè)為進(jìn)度的參數(shù)類型 第三個(gè)為返回結(jié)果的參數(shù)類型    //當(dāng)調(diào)用execute時(shí)首先執(zhí)行preExecute然后在執(zhí)行去啟用線程池的execute    //這時(shí)會(huì)啟動(dòng)子線程去執(zhí)行doinbackground--執(zhí)行完后AsyncTask內(nèi)部會(huì)有Handler將結(jié)果返回到UI線程中    //也就是onPostExecute的這個(gè)方法然后在進(jìn)行UI界面的更新   */   private void asyncImageLoad(ImageView imageView, String path) {      AsyncImageTask asyncImageTask = new AsyncImageTask(imageView);      asyncImageTask.execute(path);          }   private final class AsyncImageTask extends AsyncTask<String, Integer, Uri>{    private ImageView imageView;    public AsyncImageTask(ImageView imageView) {      this.imageView = imageView;         }    protected Uri doInBackground(String... params) {//子線程中執(zhí)行的      try {        Uri uu = ContactService.getImage(params[0], cache);//將URI路徑拋給主線程        System.out.println(uu+"  zuuuuuuuu");        return uu;      } catch (Exception e) {        e.printStackTrace();      }      return null;    }    protected void onPostExecute(Uri result) {//運(yùn)行在主線程,獲取 URI 路徑 ,進(jìn)行圖片更新      Log.i("Test", result+"");      if(result!=null && imageView!= null)        imageView.setImageURI(result);//setImageURI這個(gè)方法會(huì)根據(jù)路徑加載圖片    }   } 

三 截取字符串

//截取字符串 從 0 到 第一個(gè) "/" 字符 String name = result.substring(0,result.indexOf("/"));//截取字符串 從 第一個(gè) 字符 “/” 到 最后一個(gè) “/” 字符 String name = result.substring(result.indexOf("/")+1, result.lastIndexOf("/")));


四 MD5廣泛用于加密

import java.security.MessageDigest;import java.security.NoSuchAlgorithmException;public class MD5 {  public static String getMD5(String content) {    try {      MessageDigest digest = MessageDigest.getInstance("MD5");      digest.update(content.getBytes());      return getHashString(digest);          } catch (NoSuchAlgorithmException e) {      e.printStackTrace();    }    return null;  }    private static String getHashString(MessageDigest digest) {    StringBuilder builder = new StringBuilder();    for (byte b : digest.digest()) {      builder.append(Integer.toHexString((b >> 4) & 0xf));      builder.append(Integer.toHexString(b & 0xf));    }    return builder.toString();  }}

五 讀取流中的字節(jié):

import java.io.ByteArrayOutputStream;import java.io.InputStream;public class StreamTool {  /**   * 讀取流中的數(shù)據(jù)   * @param inStream   * @return   * @throws Exception   */  public static byte[] read(InputStream inStream) throws Exception{    ByteArrayOutputStream outStream = new ByteArrayOutputStream();    byte[] buffer = new byte[1024];    int len = 0;    while( (len = inStream.read(buffer)) != -1){      outStream.write(buffer, 0, len);    }    inStream.close();    return outStream.toByteArray();  }}

六 解析服務(wù)器傳過來的 xml 數(shù)據(jù)流

/*   * 得到解析 xml 后 的 Contact list 集合   */  public static List<Contact> getContacts() throws Exception {        String path = StringTools.getURL_list_xml;    URL url = new URL(path);  //URLConnection與HttPURLConnection都是抽象類,無法直接實(shí)例化對(duì)象。  //其對(duì)象主要通過URL的openconnection方法獲得。  //利用HttpURLConnection對(duì)象從網(wǎng)絡(luò)中獲取網(wǎng)頁(yè)數(shù)據(jù)    HttpURLConnection con = (HttpURLConnection) url.openConnection();    con.setReadTimeout(5000);    con.setRequestMethod("GET");    if(con.getResponseCode() == 200){ //http協(xié)議,里面有相應(yīng)狀態(tài)碼的解釋,                    //這里如樓上所說是判斷是否正常響應(yīng)請(qǐng)求數(shù)據(jù).      return parseXML(con.getInputStream()); //FFF      //return StreamTool.read(con.getInputStream());    }    return null;  }

其中   parseXML(con.getInputStream());

  /*   * 解析XMl    */   private static List<Contact> parseXML(InputStream xml) throws Exception {    List<Contact> contacts = new ArrayList<Contact>();    Contact contact = null;    XmlPullParser pullParser = Xml.newPullParser();    pullParser.setInput(xml,"UTF-8");    int event = pullParser.getEventType();    while(event != XmlPullParser.END_DOCUMENT){      switch (event) {      case XmlPullParser.START_TAG :        if("contact".equals(pullParser.getName())){          contact = new Contact();          contact.id = new Integer(pullParser.getAttributeValue(0));        }else if("name".equals(pullParser.getName())){          contact.name = pullParser.nextText();// .nextText 不是 .getText !!!!        }else if("image".equals(pullParser.getName())){                    contact.imageUrl = pullParser.getAttributeValue(0);//FFF        }              break;      case XmlPullParser.END_TAG :        if("contact".equals(pullParser.getName())){        contacts.add(contact);        contact = null;        }        break;      }      event = pullParser.next();    }    return contacts;  } 

七 解析 服務(wù)器傳過來的 Json 數(shù)據(jù):

/*   * 解析 Json 數(shù)據(jù)   */  private static List<SecondActivity_Goods_Bean> parseJson(InputStream inputStream) throws Exception {        List<SecondActivity_Goods_Bean> SecondActivity_Goods_Beans = new ArrayList<SecondActivity_Goods_Bean>();    SecondActivity_Goods_Bean goodBean = null;    byte[] data = StreamTool.read(inputStream);    String json = new String(data);    JSONArray array = new JSONArray(json);    for(int i=0;i<array.length();i++){      JSONObject jsonObject = array.getJSONObject(i);      jsonObject.getString("imageUrl");      jsonObject.getString("imageContent");      jsonObject.getString("goodsPrice");      goodBean = new SecondActivity_Goods_Bean(jsonObject.getString("imageUrl"),                           jsonObject.getString("imageContent"),                           jsonObject.getString("goodsPrice"));      SecondActivity_Goods_Beans.add(goodBean);    }    return null;  }

八 向服務(wù)器提交數(shù)據(jù):

  private static String sendPostRequest(String path,Map<String, String> parame, String encoding)   throws Exception {    //StringBuilder 來組合成這段數(shù)據(jù) 發(fā)給服務(wù)器   telephone_number=telephone_number&password=password     StringBuilder data = new StringBuilder();    if(parame != null && !parame.isEmpty()){      for(Map.Entry<String, String> entry:parame.entrySet()){        data.append(entry.getKey()).append("=");        data.append(URLEncoder.encode(entry.getValue(), encoding));        data.append("&");      }      data.deleteCharAt(data.length() -1);//最后會(huì)多出 “&”    }    byte[] entity = data.toString().getBytes();//默認(rèn)得到UTF-8的字節(jié)碼    HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();    conn.setConnectTimeout(5000);    conn.setRequestMethod("POST"); //采用 POST 向服務(wù)器發(fā)送請(qǐng)求    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//設(shè)置Post請(qǐng)求的 頭字段    conn.setRequestProperty("Content-Length", String.valueOf(entity.length));//設(shè)置Post請(qǐng)求的 頭字段        OutputStream outStream = conn.getOutputStream();//得到數(shù)據(jù)輸出流    outStream.write(entity);//將數(shù)據(jù)寫給 http輸出流緩沖區(qū)        if(conn.getResponseCode() == 200){ //的android客戶端向服務(wù)器請(qǐng)求 請(qǐng)求碼 時(shí) 數(shù)據(jù)輸出流的緩沖區(qū)才把數(shù)據(jù)寫給服務(wù)器      //String s = conn.getResponseMessage();//這個(gè)方法得到字符串 “OK”      /*       * 得到服務(wù)器返回的數(shù)據(jù)!!! 得到服務(wù)器的返回值就可以判斷數(shù)據(jù)是否上傳成功       */      byte[] stringData = StreamTool.read(conn.getInputStream());      String stringFlag = new String(stringData,"UTF-8");      return stringFlag; // 數(shù)據(jù)發(fā)送成功 返回 true    }    return "Submit_Fail";  }

九 SharedPreferences

public class SharedPreferences_Service {  private Context context;  private SharedPreferences sp;  public SharedPreferences_Service(Context applicationCon){    this.context = applicationCon;  }  /**   * 將 文件存儲(chǔ)在 File Explorer的data/data/相應(yīng)的包名/Rsgistered_form.xml 下導(dǎo)出該文件   * @param name   * @param telephone_number   * @param password   */  public void SetParament(String name,String telephone_number,String password){    sp = context.getSharedPreferences("Rsgistered_form", context.MODE_APPEND);    Editor et = sp.edit();    et.putString("name", name);    et.putString("telephone_number",telephone_number);    et.putString("password",password);    et.commit();  }  /**   * 在文件夾 File Explorer的data/data/相應(yīng)的 Rsgistered_form.xml下取數(shù)據(jù)   * @return   */  public Map<String, String> GetParament(){    Map<String, String> parmes = new HashMap<String, String>();    sp = context.getSharedPreferences("Rsgistered_form", context.MODE_APPEND);    parmes.put("name", sp.getString("name", ""));//獲得name字段,參數(shù)為空就返回空    parmes.put("telephone_number", sp.getString("telephone_number", ""));    parmes.put("password", sp.getString("password", ""));    return parmes;  }}

十 <!-- 設(shè)置圓角半徑 --><!-- 漸變 -->

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"   android:shape="rectangle" >  <!-- 圓角 --><corners    android:radius="9dp"    android:topLeftRadius="2dp"    android:topRightRadius="2dp"    android:bottomLeftRadius="2dp"    android:bottomRightRadius="2dp"/><!-- 設(shè)置圓角半徑 --><!-- 漸變 --><gradient    android:startColor="@android:color/white"    android:centerColor="@android:color/black"    android:endColor="@android:color/black"    android:useLevel="true"    android:angle="45"    android:type="radial"    android:centerX="0"    android:centerY="0"    android:gradientRadius="90"/><!-- 間隔 --><padding    android:left="2dp"    android:top="2dp"    android:right="2dp"    android:bottom="2dp"/><!-- 各方向的間隔 --><!-- 大小 --><size    android:width="50dp"    android:height="50dp"/><!-- 寬度和高度 --><!-- 填充 --><solid    android:color="@android:color/white"/><!-- 填充的顏色 --><!-- 描邊 --><stroke    android:width="2dp"    android:color="@android:color/black"    android:dashWidth="1dp"    android:dashGap="2dp"/> </shape>

也可以在 drawable 文件夾下 在定義個(gè)  xxx.xml  使用 selector

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_pressed_bg" android:state_pressed="true"></item> <item android:drawable="@drawable/shape_image"></item></selector>

定義一個(gè)有四個(gè)角弧度的 長(zhǎng)方形背景

<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android"   android:shape="rectangle" >  <!-- 指定4

主站蜘蛛池模板:
新安县|
河池市|
虞城县|
山西省|
十堰市|
江北区|
樟树市|
通城县|
桂林市|
普宁市|
五峰|
南部县|
新河县|
都匀市|
安阳县|
同心县|
宁都县|
老河口市|
比如县|
汤阴县|
东方市|
锦屏县|
观塘区|
灌云县|
蓬安县|
永兴县|
和林格尔县|
右玉县|
康乐县|
石狮市|
弥勒县|
华安县|
台北市|
田东县|
苍南县|
临沂市|
百色市|
宁都县|
沁阳市|
兰西县|
贡山|