栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

android 一些工具类汇总

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

android 一些工具类汇总

一 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 一个画笔对象
    paint1= new Paint();
    canvas.drawColor(Color.TRANSPARENT);
    //给画笔设置 属性
    paint1.setAntiAlias(true);
    paint1.setColor(Color.GRAY);
    paint1.setStyle(Paint.Style.FILL);
    paint1.setStrokeWidth(3);
 
    //画一个圆
    //canvas.drawCircle(arg0, arg1, arg2, arg3);
    canvas.drawCircle(10, 10, 5, paint1);
    }
}

二 AsyncImageTask

  
   private void asyncImageLoad(ImageView imageView, String path) {
      AsyncImageTask asyncImageTask = new AsyncImageTask(imageView);
      asyncImageTask.execute(path);
      
    }
   private final class AsyncImageTask extends AsyncTask{
    private ImageView imageView;
    public AsyncImageTask(ImageView imageView) {
      this.imageView = imageView;
     
    }
    protected Uri doInBackground(String... params) {//子线程中执行的
      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) {//运行在主线程,获取 URI 路径 ,进行图片更新
      Log.i("Test", result+"");
      if(result!=null && imageView!= null)
 imageView.setImageURI(result);//setImageURI这个方法会根据路径加载图片
    }
   } 

三 截取字符串

//截取字符串 从 0 到 第一个 "/" 字符
 String name = result.substring(0,result.indexOf("/"));
//截取字符串 从 第一个 字符 “/” 到 最后一个 “/” 字符
 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();
  }
}

五 读取流中的字节:

import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamTool {
  
  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();
  }
}

六 解析服务器传过来的 xml 数据流


  public static List getContacts() throws Exception {
    
    String path = StringTools.getURL_list_xml;
    URL url = new URL(path);
  //URLConnection与HttPURLConnection都是抽象类,无法直接实例化对象。
  //其对象主要通过URL的openconnection方法获得。
  //利用HttpURLConnection对象从网络中获取网页数据
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    con.setReadTimeout(5000);
    con.setRequestMethod("GET");
    if(con.getResponseCode() == 200){ //http协议,里面有相应状态码的解释, 
     //这里如楼上所说是判断是否正常响应请求数据.
      return parseXML(con.getInputStream()); //FFF
      //return StreamTool.read(con.getInputStream());
    }
    return null;
  }

其中   parseXML(con.getInputStream());

  
   private static List parseXML(InputStream xml) throws Exception {
    List contacts = new ArrayList();
    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;
  } 

七 解析 服务器传过来的 Json 数据:


  private static List parseJson(InputStream inputStream) throws Exception {
    
    List SecondActivity_Goods_Beans = new ArrayList();
    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

八 向服务器提交数据:

  private static String sendPostRequest(String path,Map parame, String encoding) 
  throws Exception {
    //StringBuilder 来组合成这段数据 发给服务器   telephone_number=telephone_number&password=password 
    StringBuilder data = new StringBuilder();
    if(parame != null && !parame.isEmpty()){
      for(Map.Entry entry:parame.entrySet()){
 data.append(entry.getKey()).append("=");
 data.append(URLEncoder.encode(entry.getValue(), encoding));
 data.append("&");
      }
      data.deleteCharAt(data.length() -1);//最后会多出 “&”
    }
    byte[] entity = data.toString().getBytes();//默认得到UTF-8的字节码
    HttpURLConnection conn = (HttpURLConnection) new URL(path).openConnection();
    conn.setConnectTimeout(5000);
    conn.setRequestMethod("POST"); //采用 POST 向服务器发送请求
    conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");//设置Post请求的 头字段
    conn.setRequestProperty("Content-Length", String.valueOf(entity.length));//设置Post请求的 头字段
    
    OutputStream outStream = conn.getOutputStream();//得到数据输出流
    outStream.write(entity);//将数据写给 http输出流缓冲区
    
    if(conn.getResponseCode() == 200){ //的android客户端向服务器请求 请求码 时 数据输出流的缓冲区才把数据写给服务器
      //String s = conn.getResponseMessage();//这个方法得到字符串 “OK”
      
      byte[] stringData = StreamTool.read(conn.getInputStream());
      String stringFlag = new String(stringData,"UTF-8");
      return stringFlag; // 数据发送成功 返回 true
    }
    return "Submit_Fail";
  }

九 SharedPreferences

public class SharedPreferences_Service {
  private Context context;
  private SharedPreferences sp;
  public SharedPreferences_Service(Context applicationCon){
    this.context = applicationCon;
  }
  
  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();
  }
  
  public Map GetParament(){
    Map parmes = new HashMap();
    sp = context.getSharedPreferences("Rsgistered_form", context.MODE_APPEND);
    parmes.put("name", sp.getString("name", ""));//获得name字段,参数为空就返回空
    parmes.put("telephone_number", sp.getString("telephone_number", ""));
    parmes.put("password", sp.getString("password", ""));
    return parmes;
  }
}



  











 

也可以在 drawable 文件夹下 在定义个  xxx.xml  使用 selector



 
 

定义一个有四个角弧度的 长方形背景



  
  
  
  
  
  
  

十一 anim文件

// anim 文件夹下 的  out.xml 动画文件



  
  
   
   
      


十二 ,将 Raw 加载数据库 导入 手机文件夹下

private SQLiteDatabase openDatabase(String dbfile) {

    try {
      if (!(new File(dbfile).exists())) {
 //判断数据库文件是否存在,若不存在则执行导入,否则直接打开数据库
 InputStream is = this.context.getResources().openRawResource(R.raw.china_city); //欲导入的数据库
 FileOutputStream fos = new FileOutputStream(dbfile);
 byte[] buffer = new byte[BUFFER_SIZE];
 int count = 0;
 while ((count = is.read(buffer)) > 0) {
   fos.write(buffer, 0, count);
 }
 fos.close();
 is.close();
      }
      return SQLiteDatabase.openOrCreateDatabase(dbfile, null);
    } catch (FileNotFoundException e) {
      PLog.e("File not found");
      e.printStackTrace();
    } catch (IOException e) {
      PLog.e("IO exception");
      e.printStackTrace();
    }

    return null;
  }

十三 , 双击退出应用

 
public class DoubleClickExit {
  
  public static long lastClick = 0L;
  private static final int THRESHOLD = 2000;// 2000ms
  public static boolean check() {
    long now = System.currentTimeMillis();
    boolean b = now - lastClick < THRESHOLD;
    lastClick = now;
    return b;
  }
}
  @Override
  public void onBackPressed() {
    if (!DoubleClickExit.check()) {
 ToastUtil.showShort(getString(R.string.double_exit));
      } else {
 finish();
      }
  }

十四 EditText 一些设置:

//设置点击后 软键盘的 显示类型 ,numberDecimal带小数点的数字
android:inputType="numberDecimal"
// 设置alertDialog中的 editView 自动弹出软键盘
 editView.setonFocusChangeListener(new View.onFocusChangeListener() {
      @Override
      public void onFocusChange(View v, boolean hasFocus) {
 if (hasFocus) {
   // 设置 弹出软键盘
   alertDialog.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
 }
      }
    });

十五 Calendar

mCalendar= Calendar.getInstance();//获取当前日期
    int_YEAR = mCalendar.get(Calendar.YEAR);
    int_MonTH = mCalendar.get(Calendar.MONTH);
    int_DAT = mCalendar.get(Calendar.DAY_OF_MONTH);
    int_lastday=mCalendar.getActualMaximum(Calendar.DAY_OF_MONTH);
    int_week = mCalendar.get(Calendar.DAY_OF_WEEK);

十六 DialogFragment ,DialogFragment官方推荐使用的,好处就不多说

public class YourDialogFragment extends DialogFragment {
 

  public interface DialogFragmentDataImp{//定义一个与Activity通信的接口,使用该DialogFragment的Activity须实现该接口
    void showMessage(String message);
  }

  public static YourDialogFragment newInstance(String message){
    //创建一个带有参数的Fragment实例
    YourDialogFragment fragment = new YourDialogFragment ();
    Bundle bundle = new Bundle();
    bundle.putString("message", message);
    fragment.setArguments(bundle);//把参数传递给该DialogFragment
    return fragment;
  }
  @Override
  public Dialog onCreateDialog(Bundle savedInstanceState) {
    View customView = LayoutInflater.from(getActivity()).inflate(
 R.layout.fragment_edit_bill_dialog, null);
    //ButterKnife.bind(this,customView);
    mContext = getActivity();

    initView();

    return new alertDialog.Builder(getActivity()).setView(customView)
 .create();
  }

使用(在 activity 或 fragment 调用):

 YourDialogFragment dialog = new YourDialogFragment();
    dialog.show(getFragmentManager(), "loginDialog");

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/161804.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号