android开发常用代码(经常更新)


android开发中我们需要一些代码来使我们的界面更美观,控件更漂亮。

除了android开发,还有程序中经常用到的东西。


比如圆角的button啊,view的布局啊等等。

下面是一些常用的代码


1.圆角button


android开发中我们需要一些代码来使我们的界面更美观,控件更漂亮。

比如圆角的button啊,view的布局啊等等。比如圆角的button啊,view的布局啊等等。

下面是一些常用的代码下面是一些常用的代码


1.圆角button1.圆角button

<?xml version="1.0" encoding="UTF-8"?>
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle"> 
    <!-- 填充的颜色 --> 
    <solid android:color="#3881fe" /> 
    <!-- 设置按钮的四个角为弧形 --> 
    <!-- android:radius 弧形的半径 --> 
    <corners android:radius="5dip" /> 
      
<!-- padding:Button里面的文字与Button边界的间隔 --> 
<padding 
   android:left="10dp" 
   android:top="10dp" 
   android:right="10dp" 
   android:bottom="10dp" 
/> 
</shape> 

2.canvas画圆角矩形

RectF backRect = new RectF(1, 0, (float) (getWidth() - 1), getHeight() - 4.5f);
canvas.drawRoundRect(backRect, 7, 7, mPaint);

3.popupWindow使用


public void showPopupWindow(Context context, View parent) {
		LayoutInflater inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		final View view = inflater.inflate(R.layout.popwindow, null, false);
		int screenWidth = getResources().getDisplayMetrics().widthPixels;
		final PopupWindow pw = new PopupWindow(view, screenWidth - 50, 300,
				true);
		pw.setFocusable(true);
		pw.setTouchable(true);
	//点击popupwindow以外区域消失
		pw.setBackgroundDrawable(new BitmapDrawable());
		pw.setOutsideTouchable(true);

		pw.showAtLocation(MainActivity.this.findViewById(R.id.main),
				Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 0);
		// 显示popupWindow对话框
	}



4. LayoutInflater 的使用

LayoutInflater inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		final View view = inflater.inflate(R.layout.xxxx, null, false);

5.生成圆角图片

public static Bitmap GetRoundedCornerBitmap(Bitmap bitmap) {  
    try {  
        Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),  
                bitmap.getHeight(), Config.ARGB_8888);  
        Canvas canvas = new Canvas(output);                   
        final Paint paint = new Paint();  
        final Rect rect = new Rect(0, 0, bitmap.getWidth(),  
                bitmap.getHeight());          
        final RectF rectF = new RectF(new Rect(0, 0, bitmap.getWidth(),  
                bitmap.getHeight()));  
        final float roundPx = 14;  
        paint.setAntiAlias(true);  
        canvas.drawARGB(0, 0, 0, 0);  
        paint.setColor(Color.BLACK);          
        canvas.drawRoundRect(rectF, roundPx, roundPx, paint);  
        paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));               
  
        final Rect src = new Rect(0, 0, bitmap.getWidth(),  
                bitmap.getHeight());  
          
        canvas.drawBitmap(bitmap, src, rect, paint);      
        return output;  
    } catch (Exception e) {           
        return bitmap;  
    }  
}  


6.得到SD路径

public static String getSDPath() {
		File SDPath = null;
		boolean isSDExist = Environment.getExternalStorageState().equals(
				android.os.Environment.MEDIA_MOUNTED);
		if (isSDExist == true) {
			SDPath = Environment.getExternalStorageDirectory();
		}
		return SDPath.toString();
	}


7.将string写到文件末尾

/**
	 * 将字符串写到文件末尾
	 * @param txt 原始字符串
	 * @param fileName 带路径的文件名
	 * @return true 写入成功
	 */
	public static boolean stringToFileEnd(String txt, String fileName) {
		File file = new File(fileName);
		if (file.exists()) {
			try {
				FileOutputStream outputStream = new FileOutputStream(fileName,
						true);
				outputStream.write(txt.getBytes());
				outputStream.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			return true;
		} else {
			return false;
		}
	}

8.得到手机屏幕高度宽度以及scale

scale = getResources().getDisplayMetrics().density;
		screenHeight = getResources().getDisplayMetrics().heightPixels;
		screenWidth = getResources().getDisplayMetrics().widthPixels;


9.onMeasure常用方法 获取当前控件高度和宽度等等


protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
		height = screenHeight / 4;
		width = measureWidth(widthMeasureSpec);
		setMeasuredDimension(width, height);
	}

	private int measureHeight(int measureSpec) {

		int specMode = MeasureSpec.getMode(measureSpec);
		int specSize = MeasureSpec.getSize(measureSpec);

		// Default size if no limits are specified.

		int result = 500;
		if (specMode == MeasureSpec.AT_MOST) {

			// Calculate the ideal size of your
			// control within this maximum size.
			// If your control fills the available
			// space return the outer bound.

			result = specSize;
		} else if (specMode == MeasureSpec.EXACTLY) {

			// If your control can fit within these bounds return that value.
			result = specSize;
		}

		return result;
	}

	private int measureWidth(int measureSpec) {
		int specMode = MeasureSpec.getMode(measureSpec);
		int specSize = MeasureSpec.getSize(measureSpec);

		// Default size if no limits are specified.
		int result = 500;
		if (specMode == MeasureSpec.AT_MOST) {
			// Calculate the ideal size of your control
			// within this maximum size.
			// If your control fills the available space
			// return the outer bound.
			result = specSize;
		}

		else if (specMode == MeasureSpec.EXACTLY) {
			// If your control can fit within these bounds return that value.

			result = specSize;
		}

		return result;
	}

10.bitmap的缩放

/**
	 * 按照指定长宽压缩
	 * 
	 * @param srcBitmap
	 * @param newWidth
	 * @param newHeight
	 * @return
	 */
	public static Bitmap bitmapZoomBySize(Bitmap srcBitmap, int newWidth,
			int newHeight) {
		int srcWidth = srcBitmap.getWidth();
		int srcHeight = srcBitmap.getHeight();

		float scaleWidth = ((float) newWidth) / srcWidth;
		float scaleHeight = ((float) newHeight) / srcHeight;

		return bitmapZoomByScale(srcBitmap, scaleWidth, scaleHeight);
	}

	/**
	 * 使用长宽缩放比缩放
	 * 
	 * @param srcBitmap
	 * @param scaleWidth
	 * @param scaleHeight
	 * @return
	 */
	public static Bitmap bitmapZoomByScale(Bitmap srcBitmap, float scaleWidth,
			float scaleHeight) {
		int srcWidth = srcBitmap.getWidth();
		int srcHeight = srcBitmap.getHeight();
		Matrix matrix = new Matrix();
		matrix.postScale(scaleWidth, scaleHeight);
		Bitmap resizedBitmap = Bitmap.createBitmap(srcBitmap, 0, 0, srcWidth,
				srcHeight, matrix, true);
		if (resizedBitmap != null) {
			return resizedBitmap;
		} else {

			return srcBitmap;
		}
	}

11.文件读写相关操作

//判断文件是否存在
	public boolean isFileExits(String fileName) {
		File file = new File(SDPath + fileName);
		return file.exists();
	}
	
	//新建文件夹

	public void makeDir(String dirName)
	{
		File file = new File(SDPath + dirName);
		if (!file.exists())
		file.mkdir();
	}
	
	
	//获得文件数量
	public int getNumOfFiles(String dir)
	{
		File file = new File(SDPath + dir);
		File[] numFile = file.listFiles();
		return numFile.length;
	}

	//删除一个文件
<span style="white-space:pre">	</span>public boolean deleteFile(String fileName)
	{
		File file = new File(SDPath + fileName);
		if (file.exists())
		{
			System.out.println("file name is  " + file.getName());
			try {
				file.delete();
			} catch (Exception e) {
				e.printStackTrace();
			}
			return true;
		}
		else {
			return false;
		}
	}
	//读取一个文件
	public String readFromFile(String fileName)
	{
		String res = "";
		
		try {
			
			FileInputStream inputStream = new FileInputStream(SDPath + fileName);
			int len = inputStream.available();
			byte buffer[] = new byte[len];
			inputStream.read(buffer);
			res = EncodingUtils.getString(buffer, "UTF-8");
			inputStream.close();
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		System.out.println("res ----->" + res);
		return res;
	}
	//将字符串写到文件末尾
	public boolean stringToFileEnd(String txt,String fileName)
	{
		File file = new File(SDPath + fileName);
		if (file.exists())
		{
			try {
				FileOutputStream outputStream = new FileOutputStream(SDPath + fileName,true);
				outputStream.write(txt.getBytes());
				outputStream.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			return true;
		}
		else {
			return false;
		}
	}
	//将字符串从文件头部开始写
	public boolean stringToFile(String txtString,String fileName)
	{
		File file = new File(SDPath + fileName);
		if (file.exists())
		{
			try {
				FileOutputStream outputStream = new FileOutputStream(SDPath + fileName);
				outputStream.write(txtString.getBytes());
				outputStream.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			return true;
		}
		else {
			return false;
		}
	}
	//删除文件
	public File createFile(String fileName)
	{
		File file = new File(SDPath + fileName);
		try {
			file.createNewFile();
		} catch (Exception e) {
			// TODO: handle exception
			e.printStackTrace();
		}
		return file;
	}

返回事件捕捉

public void onBackPressed() {
		// TODO Auto-generated method stub
		System.out.println("hehehehhehehehhe");
		super.onBackPressed();
	}

获取当前时间:

Time t=new Time("GMT+8"); // or Time t=new Time("GMT+8"); 加上Time Zone资料。  
		t.setToNow(); // 取得系统时间。  
		int year = t.year;  
		int month = t.month;  
		int date = t.monthDay;  
		int hour = t.hour; // 0-23  
		int minute = t.minute;  
		int second = t.second;

唯一不足的是月份少一月,小时得加8


22.获取星期几

public class DateString {  
    private static String mYear;  
    private static String mMonth;  
    private static String mDay;  
    private static String mWay;  
       
    public static String StringDate(){  
        final Calendar c = Calendar.getInstance();  
        c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));  
        mYear = String.valueOf(c.get(Calendar.YEAR)); // 获取当前年份  
        mMonth = String.valueOf(c.get(Calendar.MONTH) + 1);// 获取当前月份  
        mDay = String.valueOf(c.get(Calendar.DAY_OF_MONTH));// 获取当前月份的日期号码  
        mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK));  
        if("1".equals(mWay)){  
            mWay ="SUN";  
        }else if("2".equals(mWay)){  
            mWay ="MON";  
        }else if("3".equals(mWay)){  
            mWay ="TUE";  
        }else if("4".equals(mWay)){  
            mWay ="WED";  
        }else if("5".equals(mWay)){  
            mWay ="THU";  
        }else if("6".equals(mWay)){  
            mWay ="FRI";  
        }else if("7".equals(mWay)){  
            mWay ="SAT";  
        }  
        return mYear + "年" + mMonth + "月" + mDay+"日"+"/星期"+mWay;  
    }  
       
}

22.判断当前是否联网

public boolean inNetwork() {
		ConnectivityManager cManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
		NetworkInfo info = cManager.getActiveNetworkInfo();
		if (info != null && info.isAvailable()) {
			// do something
			// 能联网
			return true;
		} else {
			// do something
			// 不能联网
			return false;
		}
	}

23.listview一些常用属性设置

        去掉item分割线
        android:divider="@null"
        去掉顶部和底部边缘模糊
        android:overScrollMode="never"
        去掉滑动栏
        android:scrollbars="none"



hashmap遍历

	public static void printHash(HashMap<String, String> hashMap) {
		Iterator iter = hashMap.entrySet().iterator();
		while (iter.hasNext()) {
			Map.Entry entry = (Map.Entry) iter.next();
			Object key = entry.getKey();
			Object val = entry.getValue();
			System.out.println("key = " + key + " val = " + val);
		}
	}

解析json字符串

private static Map<String, String> parseJSONString(String JSONString)
			throws JSONException {
		Map<String, String> resultMap = new HashMap<String, String>();
		JSONArray jsonArray = new JSONArray();
		try {
			// 直接把JSON字符串转化为一个JSONObject对象
			JSONObject person = new JSONObject(JSONString);
			System.out.println("the info is "
					+ person.getJSONArray("infoBaseTime").toString());
			jsonArray = person.getJSONArray("infoBaseTime");
		} catch (JSONException e) {
			e.printStackTrace();
		}

		for (int i = 0; i < jsonArray.length(); i++) {
			JSONObject jsonObject = jsonArray.getJSONObject(i);
			Map<String, String> map = new HashMap<String, String>();
			for (Iterator<?> iter = jsonObject.keys(); iter.hasNext();) {
				String key = (String) iter.next();
				String value = jsonObject.get(key).toString();
				resultMap.put(key, value);
				System.out.println("key is " + key + " value is " + value);
			}
			// rsList.add(map);
		}
		printHash(resultMap);
		return resultMap;
	}

http发起网络请求

/**
	 * 想数据库写入手机参数
	 * 
	 * @param IMEI
	 *            手机的IMEI
	 * @param basetime
	 *            手机滑动基数
	 * @param deviceID
	 *            手机设备号
	 * @throws IOException
	 */

	public static void PostBaseTime(String IMEI, float basetime, String deviceID)
			throws IOException {

		String responseRes = "";
		HttpClient httpClient = new DefaultHttpClient();
		HttpPost httpPost = new HttpPost(HTTP_POST_BASETIME);
		List<BasicNameValuePair> formparams = new ArrayList<BasicNameValuePair>();
		formparams.add(new BasicNameValuePair("baseTime", basetime + ""));
		formparams.add(new BasicNameValuePair("IMEI", IMEI));
		formparams.add(new BasicNameValuePair("deviceID", deviceID));
		UrlEncodedFormEntity uefEntity = new UrlEncodedFormEntity(formparams,
				HTTP.UTF_8);
		httpPost.setEntity(uefEntity);
		HttpResponse response = (HttpResponse) httpClient.execute(httpPost);
		if (response.getStatusLine().getStatusCode() == 200) {
			responseRes = EntityUtils
					.toString(response.getEntity(), HTTP.UTF_8);
			System.out.println("the res is " + responseRes);
		}
	}

得到手机一些参数,屏幕大小等等

screenWidth = wm.getDefaultDisplay().getWidth();
		screenheight = wm.getDefaultDisplay().getHeight();
		System.out.println("screen width is " + screenWidth
				+ " screen height is " + screenheight);
		scale = getActivity().getResources().getDisplayMetrics().density;
		topHeight = (int) (scale * 50 + 0.5f);
		bottomHeight = (int) (scale * 55 + 0.5f);
		notiHeight = Resources.getSystem().getDimensionPixelSize(
				Resources.getSystem().getIdentifier("status_bar_height",
						"dimen", "android"));

Android 拷贝assets目录下所有文件及文件夹到指定路径

  1. public class AssetsCopyer {  
  2.   
  3.     private static final String TAG = "AssetsCopyer";  
  4.       
  5.     public static void releaseAssets(Context context, String assetsDir,  
  6.             String releaseDir) {  
  7.           
  8. //      Log.d(TAG, "context: " + context + ", " + assetsDir);  
  9.         if (TextUtils.isEmpty(releaseDir)) {  
  10.             return;  
  11.         } else if (releaseDir.endsWith("/")) {  
  12.             releaseDir = releaseDir.substring(0, releaseDir.length() - 1);  
  13.         }  
  14.    
  15.         if (TextUtils.isEmpty(assetsDir) || assetsDir.equals("/")) {  
  16.             assetsDir = "";  
  17.         } else if (assetsDir.endsWith("/")) {  
  18.             assetsDir = assetsDir.substring(0, assetsDir.length() - 1);  
  19.         }  
  20.    
  21.         AssetManager assets = context.getAssets();  
  22.         try {  
  23.             String[] fileNames = assets.list(assetsDir);//只能获取到文件(夹)名,所以还得判断是文件夹还是文件  
  24.             if (fileNames.length > 0) {// is dir  
  25.                 for (String name : fileNames) {  
  26.                     if (!TextUtils.isEmpty(assetsDir)) {  
  27.                         name = assetsDir + File.separator + name;//补全assets资源路径  
  28.                     }  
  29. //                    Log.i(, brian name= + name);  
  30.                     String[] childNames = assets.list(name);//判断是文件还是文件夹  
  31.                     if (!TextUtils.isEmpty(name) && childNames.length > 0) {  
  32.                         checkFolderExists(releaseDir + File.separator + name);  
  33.                         releaseAssets(context, name, releaseDir);//递归, 因为资源都是带着全路径,   
  34.                                                                                            //所以不需要在递归是设置目标文件夹的路径  
  35.                     } else {  
  36.                         InputStream is = assets.open(name);  
  37. //                        FileUtil.writeFile(releaseDir + File.separator + name, is);  
  38.                         writeFile(releaseDir + File.separator + name, is);  
  39.                     }  
  40.                 }  
  41.             } else {// is file  
  42.                 InputStream is = assets.open(assetsDir);  
  43.                 // 写入文件前, 需要提前级联创建好路径, 下面有代码贴出  
  44. //                FileUtil.writeFile(releaseDir + File.separator + assetsDir, is);  
  45.                 writeFile(releaseDir + File.separator + assetsDir, is);  
  46.             }  
  47.    
  48.         } catch (Exception e) {  
  49.             e.printStackTrace();  
  50.         }  
  51.     }  
  52.       
  53.     private static boolean writeFile(String fileName, InputStream in) throws IOException  
  54.     {  
  55.         boolean bRet = true;  
  56.         try {  
  57.             OutputStream os = new FileOutputStream(fileName);  
  58.             byte[] buffer = new byte[4112];  
  59.             int read;  
  60.             while((read = in.read(buffer)) != -1)  
  61.             {  
  62.                 os.write(buffer, 0, read);  
  63.             }  
  64.             in.close();  
  65.             in = null;  
  66.             os.flush();  
  67.             os.close();  
  68.             os = null;  
  69. //          Log.v(TAG, "copyed file: " + fileName);  
  70.         } catch (FileNotFoundException e) {  
  71.             // TODO Auto-generated catch block  
  72.             e.printStackTrace();  
  73.             bRet = false;  
  74.         }  
  75.         return bRet;  
  76.     }  
  77.       
  78.     private static void checkFolderExists(String path)  
  79.     {  
  80.         File file = new File(path);  
  81.         if((file.exists() && !file.isDirectory()) || !file.exists())  
  82.         {  
  83.             file.mkdirs();  
  84.         }  
  85.     }  
  86. }  

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值