android 一些 utils
一 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
/* * //默认开启的线程数为128条如果超过128条会放进队列进行排队 //继承AsyncTask时指定三个参数第一个为要传入的参数类型 第二个为进度的参数类型 第三个为返回结果的参数类型 //当调用execute时首先执行preExecute然后在执行去启用线程池的execute //这时会启动子线程去执行doinbackground--执行完后AsyncTask内部会有Handler将结果返回到UI线程中 //也就是onPostExecute的这个方法然后在进行UI界面的更新 */ 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 { / * 读取流中的数据 * @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(); }}
六 解析服务器传过来的 xml 数据流
/* * 得到解析 xml 后 的 Contact list 集合 */ 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()); /* * 解析XMl */ 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 数据:
/* * 解析 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 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; } / * 将 文件存储在 File Explorer的data/data/相应的包名/Rsgistered_form.xml 下导出该文件 * @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/相应的 Rsgistered_form.xml下取数据 * @return */ 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 动画文件
关键字:android, java
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!