广告
返回顶部
首页 > 资讯 > 移动开发 >android 一些工具类汇总
  • 478
分享到

android 一些工具类汇总

工具类工具Android 2022-06-06 07:06:47 478人浏览 泡泡鱼
摘要

一 Paint ,Canvas public class drawView extends View{ private Paint paint1; public dr

一 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<String, Integer, Uri>{
    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<Contact> 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<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;
  } 

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



  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;
  }

八 向服务器提交数据:


  private static String sendPostRequest(String path,Map<String, String> parame, String encoding) 
  throws Exception {
    //StringBuilder 来组合成这段数据 发给服务器   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);//最后会多出 “&”
    }
    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<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字段,参数为空就返回空
    parmes.put("telephone_number", sp.getString("telephone_number", ""));
    parmes.put("password", sp.getString("password", ""));
    return parmes;
  }
}

十 <!-- 设置圆角半径 --><!-- 渐变 -->


<?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"/>
<!-- 设置圆角半径 --><!-- 渐变 -->
<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 文件夹下 在定义个  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>

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


<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
  android:shape="rectangle" >
  <!-- 指定4個角的弧度 -->
  <corners android:topLeftRadius="2px"
    android:topRightRadius="2px"
    android:bottomLeftRadius="2px"
    android:bottomRightRadius="2px"/>
  <!-- 指定背景顏色 -->
  <solid android:color="#FFFFFF"/>
  <!-- 指定框條的顏色的寬度 -->
  <stroke android:width="0.5dp" android:color="#7A7A7A"/>
</shape>

十一 anim文件

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


<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
  android:shareInterpolator="false">
  <!-- 100%p 的 p 是指从父类view 的 指定位置 0 到 起始位 100%-->
  <!-- 位移 -->
   <translate
    android:fromXDelta="0%p"
    android:toXDelta="100%p"
    android:duration="1000"
    />
   <!-- 透明度 -->
   <alpha
    android:fromAlpha="1.0"
    android:toAlpha="0.5" 
    android:duration="500"
    />   
</set>

十二 ,将 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");
您可能感兴趣的文章:android通用xml解析方法基于Android XML解析与保存的实现android layout XML解析错误的解决方法Android中使用sax解析xml文件的方法Android 解析XML 文件的四种方法总结Android中使用PULL方式解析XML文件深入介绍Android提高之XML解析与生成实例详解Android 使用Pull方法解析XML文件的方法android编程之XML文件解析方法详解(附源码)Android使用Pull解析器解析xml文件的实现代码19个Android常用工具类汇总Android开发中解析xml文件XmlUtils工具类与用法示例


--结束END--

本文标题: android 一些工具类汇总

本文链接: https://www.lsjlt.com/news/24309.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • android 一些工具类汇总
    一 Paint ,Canvas public class drawView extends View{ private Paint paint1; public dr...
    99+
    2022-06-06
    工具类 工具 Android
  • MySQL 工具汇总
    收录了MySQL相关有用的工具。工具包含:性能测试,状态分析,SQL路由等方面 本文汇总了和MySQL运维开发相关的所有工具,并会持续更新 工具套件集 ·  &nb...
    99+
    2022-10-18
  • javascript 日期工具汇总
    let Utils = { isLeapYear: function(y) { return (y % 4 == 0 && y % 100 !=...
    99+
    2022-11-12
  • oerr 工具使用汇总
    oerr可以在Linux和UNIX操作系统上查询简短的报错信息的含义,可以很好的辅助排查Oracle故障。1.oerr的使用方法[oracle@BJS ~]$ oerr ora 1257112571, 00...
    99+
    2022-10-18
  • Android APP逆向分析工具和方法汇总
    一、概述 受益于移动设备的广泛普及,移动应用近年来得到了蓬勃发展。基于移动设备集成的各类传感器,众多功能丰富的移动应用被开发出来,聚集了大量高价值用户隐私数据,包括用户身份信息、地理位置信息、账户资料...
    99+
    2023-09-05
    android
  • Java常用工具类汇总 附示例代码
    一、FileUtils private static void fileUtilsTest() { try { //读取文件内容 Stri...
    99+
    2022-11-12
  • Java常用工具类汇总以及示例代码
    今天小编给大家分享的是Java常用工具类汇总以及示例代码,相信很多人都不太了解,为了让大家更加了解,所以给大家总结了以下内容,一起往下看吧。一定会有所收获的哦。Java是什么Java是一门面向对象编程语言,可以编写桌面应用程序、Web应用程...
    99+
    2023-06-14
  • 一些RCE的汇总
    RCE 自增RCE 参考[CTFshow-RCE极限大挑战官方wp] RCE-1[过滤.(] RCE-2p[自增-Array] ...
    99+
    2023-10-06
    php 开发语言
  • Android中Paint类和Canvas类的方法汇总
    Paint类的常用的方法 1.setColor方法,用于设置画笔的颜色, public void setColor(int color)//参数color为颜色值,也可以使用C...
    99+
    2022-06-06
    方法 方法汇总 canvas Android
  • Java常用工具类总结
    目录一、线程协作、控制并发流程的工具类二、CountDownLatch倒计时门闩三、Semaphore信号量四、Condition接口(又称条件对象)五、CyclicBarrier和...
    99+
    2022-11-12
  • 总结一般用哪些工具开发Node.js
    Node.js是一个开放源代码、跨平台的后端JavaScript运行环境。它使用Chrome V8引擎为JavaScript代码提供编译和执行能力,来构建快速轻量级的网络应用程序。Node.js在Web开发中已经变得不可或缺。在开发中,要选...
    99+
    2023-05-14
  • java反汇编工具有哪些
    java中的反汇编工具有:1.jad,java反编译工具;2.JD-GUI,基于c++开发的java反编译工具;3.jdec,开源的java程序反编译工具;4.CFR,jar反编译软件;java中的反汇编工具有以下几种jadjad是一个使用...
    99+
    2022-10-20
  • Android 安卓PopupWindow工具类
    文章目录引入效果图示例使用方法相关解释工具类封装最后奉上汪姑娘的Blog 引入 Android在需要类似于这样的弹窗会用到PopupWindo...
    99+
    2022-06-06
    popupwindow Android
  • Nginx的一些常用配置汇总
    目录Nginx配置文件结构Nginx日志切割root 与 alias使用GZIP压缩提升请求效率location匹配规则解析使用SwitchHosts模拟本地域名解析Nginx跨域配...
    99+
    2022-11-13
  • Android 定时执行工具类
    类名为MyTimeTask的工具类: import java.util.Timer; import java.util.TimerTask; p...
    99+
    2022-06-06
    工具类 工具 Android
  • Android相机管理工具类
    本文实例为大家分享了Android相机管理工具类的具体代码,供大家参考,具体内容如下 package com.utils.tools; import java.io.Buf...
    99+
    2022-06-06
    工具类 工具 Android
  • 【Linux】环境基础开发工具使用(万字汇总)
    🎇Linux:环境基础开发工具使用 博客主页:一起去看日落吗分享博主的在Linux中学习到的知识和遇到的问题博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话...
    99+
    2023-09-05
    linux 服务器 网络
  • 最新调查:10类排名最高的软件安全性测试工具汇总
    软件安全性是一个广泛而复杂的主题,每一个新的软件总可能有完全不符合所有已知模式的新型安全性缺陷出现。要避免因安全性缺陷问题受各种可能类型的攻击是不切实际的。在软件安全测试时,运用一组好的原则来避免不安全的软件上市、避免不安全软件受攻击,就显...
    99+
    2023-06-05
  • 选择适合你的 IDE:Python 开发者必备工具汇总
    Python 是一种高级编程语言,越来越受到开发者的欢迎。与此同时,越来越多的 Python 集成开发环境(IDE)也在不断涌现。但是,如何选择适合自己的 IDE 呢?本文将为大家介绍一些 Python 开发者必备工具,帮助你选择适合自己...
    99+
    2023-07-30
    数组 文件 ide
  • 如何在Android中编写一个Intent跳转工具类
    这篇文章给大家介绍如何在Android中编写一个Intent跳转工具类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。一、概述Intent的中文意思是“意图,意向”,在Android中提供了Intent机制来协助应用间的...
    99+
    2023-05-30
    android intent
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作