一 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 ListgetContacts() 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 ListparseXML(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 ListparseJson(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,Mapparame, 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 MapGetParament(){ 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");



