android截取字符串工具类,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

/*

* //默认开启的线程数为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

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

}

}

android:shape="rectangle" >

android:radius="9dp"

android:topLeftRadius="2dp"

android:topRightRadius="2dp"

android:bottomLeftRadius="2dp"

android:bottomRightRadius="2dp"/>

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"/>

android:left="2dp"

android:top="2dp"

android:right="2dp"

android:bottom="2dp"/>

android:width="50dp"

android:height="50dp"/>

android:color="@android:color/white"/>

android:width="2dp"

android:color="@android:color/black"

android:dashWidth="1dp"

android:dashGap="2dp"/>

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

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

android:shape="rectangle" >

android:topRightRadius="2px"

android:bottomLeftRadius="2px"

android:bottomRightRadius="2px"/>

十一 anim文件

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

android:shareInterpolator="false">

android:fromXDelta="0%p"

android:toXDelta="100%p"

android:duration="1000"

/>

android:fromAlpha="1.0"

android:toAlpha="0.5"

android:duration="500"

/>

十二 ,将 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 {

/**

* 双击退出检测, 阈值 2000ms

*/

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");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值