不知不觉中,就收集了超过60条的自己感觉有意思的代码片段,分为三篇文章:android有用代码片段、Android有用代码片段(二)、Android有用代码片段(三)这三篇,今天,开始第四篇的整理!

     六十一、Android创建桌面快捷方式:

1. /** 
2.  * 为程序创建桌面快捷方式 
3.  */   
4. private void addShortcut(){    
5. new Intent("com.android.launcher.action.INSTALL_SHORTCUT");    
6.              
7. //快捷方式的名称    
8.     shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));    
9. "duplicate", false); //不允许重复创建    
10.              
11. //指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer    
12. //注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序    
13. new ComponentName(this.getPackageName(), "."+this.getLocalClassName());    
14. new Intent(Intent.ACTION_MAIN).setComponent(comp));    
15.      
16. //快捷方式的图标    
17. this, R.drawable.icon);    
18.     shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);    
19.              
20.     sendBroadcast(shortcut);    
21. }



需要声明权限:

1. <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />



http://www.apkbus.com/android-17389-1-1.html

http://dev.10086.cn/cmdn/wiki/index.php?edition-view-8836-1.html


 六十二、android画图去锯齿效果

      paint.setAntiAlias(true);

      画图片的时候,前面设置没有用

   canvas.setDrawFilter(new PaintFlagsDrawFilter(0, Paint.ANTI_ALIAS_FLAG|Paint.FILTER_BITMAP_FLAG));

六十三、获取sd卡里文件信息

1. public class SDFileExplorer extends Activity{  
2.     ListView listView;  
3.     TextView textView;  
4. // 记录当前的父文件夹  
5.     File currentParent;  
6. // 记录当前路径下的所有文件的文件数组  
7.     File[] currentFiles;  
8.   
9. @Override  
10. public void onCreate(Bundle savedInstanceState){  
11. super.onCreate(savedInstanceState);  
12.         setContentView(R.layout.main);  
13. //获取列出全部文件的ListView  
14.         listView = (ListView) findViewById(R.id.list);  
15.         textView = (TextView) findViewById(R.id.path);  
16. //获取系统的SD卡的目录  
17. new File("/mnt/sdcard/");  
18. //如果 SD卡存在  
19. if (root.exists()){  
20.             currentParent = root;  
21.             currentFiles = root.listFiles();  
22. //使用当前目录下的全部文件、文件夹来填充ListView  
23.             inflateListView(currentFiles);  
24.         }  
25. // 为ListView的列表项的单击事件绑定监听器  
26. new OnItemClickListener(){  
27. @Override  
28. public void onItemClick(AdapterView<?> parent, View view,  
29. int position, long id){  
30. // 用户单击了文件,直接返回,不做任何处理  
31. if (currentFiles[position].isFile())  
32. return;  
33. // 获取用户点击的文件夹下的所有文件  
34.                 File[] tmp = currentFiles[position].listFiles();  
35. if (tmp == null || tmp.length == 0){  
36. this, "当前路径不可访问或该路径下没有文件",  
37. 20000).show();  
38. else{  
39. //获取用户单击的列表项对应的文件夹,设为当前的父文件夹  
40.                     currentParent = currentFiles[position];  
41. //保存当前的父文件夹内的全部文件和文件夹  
42.                     currentFiles = tmp;  
43. // 再次更新ListView  
44.                     inflateListView(currentFiles);  
45.                 }  
46.             }  
47.         });  
48. // 获取上一级目录的按钮  
49.         Button parent = (Button) findViewById(R.id.parent);  
50. new OnClickListener(){  
51. @Override  
52. public void onClick(View source){  
53. try{  
54. if (!currentParent.getCanonicalPath().equals("/mnt/sdcard")){  
55. // 获取上一级目录  
56.                         currentParent = currentParent.getParentFile();  
57. // 列出当前目录下所有文件  
58.                         currentFiles = currentParent.listFiles();  
59. // 再次更新ListView  
60.                         inflateListView(currentFiles);  
61.                     }  
62.                 }  
63. catch (IOException e){  
64.                     e.printStackTrace();  
65.                 }  
66.             }  
67.         });  
68.     }  
69.   
70. private void inflateListView(File[] files){  
71. // 创建一个List集合,List集合的元素是Map  
72. new ArrayList<Map<String, Object>>();  
73. for (int i = 0; i < files.length; i++){  
74. new HashMap<String, Object>();  
75. //如果当前File是文件夹,使用folder图标;否则使用file图标  
76. if (files[i].isDirectory()){  
77. "icon", R.drawable.folder);  
78. else{  
79. "icon", R.drawable.file);  
80.             }  
81. "fileName", files[i].getName());  
82. //添加List项  
83.             listItems.add(listItem);  
84.         }  
85. // 创建一个SimpleAdapter  
86. new SimpleAdapter(this, listItems,  
87. new String[] { "icon", "fileName" }, new int[] {  
88.                 R.id.icon, R.id.file_name });  
89. // 为ListView设置Adapter  
90.         listView.setAdapter(simpleAdapter);  
91. try{  
92. "当前路径为:" + currentParent.getCanonicalPath());  
93. catch (IOException e){  
94.             e.printStackTrace();  
95.         }  
96.     }  
97. }



  六十四、Android标题栏显示progressBar

1. protected void onCreate(Bundle savedInstanceState) {  
2. super.onCreate(savedInstanceState);  
3. //先给Activity注册界面进度条功能  
4.     setContentView(R.layout.main);  
5. true);//在需要显示进度条的时候调用这个方法  
6. false);//在不需要显示进度条的时候调用这个方法  
7. }



 

   六十五、单击EditText全选内容

1. percent.setOnTouchListener(this);  
2.   
3. @Override  
4. public boolean onTouch(View v, MotionEvent event) {  
5. if(v.getId()==R.id.seekPercent) {  
6. percent.selectAll();  
7. InputMethodManager imm = (InputMethodManager)  
8. context.getSystemService(Context.INPUT_METHOD_SERVICE);  
9. imm.showSoftInput(v, 0);  
10. return true;  
11. }  
12. return false;  
13. }




六十六、Android设置图片圆角

1. /** 
2.   * 将图片设置为圆角 
3.   */   
4. public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {   
5.   Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),   
6.   bitmap.getHeight(), Config.ARGB_8888);   
7. new Canvas(output);   
8. final int color = 0xff424242;   
9. final Paint paint = new Paint();   
10. final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight());   
11. final RectF rectF = new RectF(rect);   
12. final float roundPx = pixels;   
13. true);   
14. 0, 0, 0, 0);   
15.   paint.setColor(color);   
16.   canvas.drawRoundRect(rectF, roundPx, roundPx, paint);   
17. new PorterDuffXfermode(Mode.SRC_IN));   
18.   canvas.drawBitmap(bitmap, rect, rect, paint);   
19. return output;   
20. }




六十七、Android 自定义json解析类

1. import java.lang.reflect.Method;  
2. import java.util.Collection;  
3. import java.util.Map;  
4. import java.util.Set;  
5. public final class JsonUtil{  
6. /**
7. * 把对象封装为JSON格式
8. *
9. * @param o
10. * 对象
11. * @return JSON格式
12. */  
13. @SuppressWarnings("unchecked")  
14. public static String toJson(final Object o){  
15. if (o == null){  
16. return "null";  
17. }  
18. if (o instanceof String) //String{  
19. return string2Json((String) o);  
20. }  
21. if (o instanceof Boolean) //Boolean{  
22. return boolean2Json((Boolean) o);  
23. }  
24. if (o instanceof Number) //Number{  
25. return number2Json((Number) o);  
26. }  
27. if (o instanceof Map) //Map{  
28. return map2Json((Map<String, Object>) o);  
29. }  
30. if (o instanceof Collection) //List Set{  
31. return collection2Json((Collection) o);  
32. }  
33. if (o instanceof Object[]) //对象数组{  
34. return array2Json((Object[]) o);  
35. }  
36. if (o instanceof int[])//基本类型数组  
37. {  
38. return intArray2Json((int[]) o);  
39. }  
40. if (o instanceof boolean[])//基本类型数组  
41. {  
42. return booleanArray2Json((boolean[]) o);  
43. }  
44. if (o instanceof long[])//基本类型数组  
45. {  
46. return longArray2Json((long[]) o);  
47. }  
48. if (o instanceof float[])//基本类型数组  
49. {  
50. return floatArray2Json((float[]) o);  
51. }  
52. if (o instanceof double[])//基本类型数组  
53. {  
54. return doubleArray2Json((double[]) o);  
55. }  
56. if (o instanceof short[])//基本类型数组  
57. {  
58. return shortArray2Json((short[]) o);  
59. }  
60. if (o instanceof byte[])//基本类型数组  
61. {  
62. return byteArray2Json((byte[]) o);  
63. }  
64. if (o instanceof Object) //保底收尾对象  
65. {  
66. return object2Json(o);  
67. }  
68. throw new RuntimeException("不支持的类型: " + o.getClass().getName());  
69. }  
70. /**
71. * 将 String 对象编码为 JSON格式,只需处理好特殊字符
72. *
73. * @param s
74. * String 对象
75. * @return JSON格式
76. */  
77. static String string2Json(final String s)  
78. {  
79. final StringBuilder sb = new StringBuilder(s.length() + 20);  
80. sb.append('\"');  
81. for (int i = 0; i < s.length(); i++)  
82. {  
83. final char c = s.charAt(i);  
84. switch (c)  
85. {  
86. case '\"':  
87. sb.append("\\\"");  
88. break;  
89. case '\\':  
90. sb.append("\\\\");  
91. break;  
92. case '/':  
93. sb.append("\\/");  
94. break;  
95. case '\b':  
96. sb.append("\\b");  
97. break;  
98. case '\f':  
99. sb.append("\\f");  
100. break;  
101. case '\n':  
102. sb.append("\\n");  
103. break;  
104. case '\r':  
105. sb.append("\\r");  
106. break;  
107. case '\t':  
108. sb.append("\\t");  
109. break;  
110. default:  
111. sb.append(c);  
112. }  
113. }  
114. sb.append('\"');  
115. return sb.toString();  
116. }  
117. /**
118. * 将 Number 表示为 JSON格式
119. *
120. * @param number
121. * Number
122. * @return JSON格式
123. */  
124. static String number2Json(final Number number)  
125. {  
126. return number.toString();  
127. }  
128. /**
129. * 将 Boolean 表示为 JSON格式
130. *
131. * @param bool
132. * Boolean
133. * @return JSON格式
134. */  
135. static String boolean2Json(final Boolean bool)  
136. {  
137. return bool.toString();  
138. }  
139. /**
140. * 将 Collection 编码为 JSON 格式 (List,Set)
141. *
142. * @param c
143. * @return
144. */  
145. static String collection2Json(final Collection<Object> c)  
146. {  
147. final Object[] arrObj = c.toArray();  
148. return toJson(arrObj);  
149. }  
150. /**
151. * 将 Map<String, Object> 编码为 JSON 格式
152. *
153. * @param map
154. * @return
155. */  
156. static String map2Json(final Map<String, Object> map)  
157. {  
158. if (map.isEmpty())  
159. {  
160. return "{}";  
161. }  
162. final StringBuilder sb = new StringBuilder(map.size() << 4); //4次方  
163. sb.append('{');  
164. final Set<String> keys = map.keySet();  
165. for (final String key : keys)  
166. {  
167. final Object value = map.get(key);  
168. sb.append('\"');  
169. sb.append(key); //不能包含特殊字符  
170. sb.append('\"');  
171. sb.append(':');  
172. sb.append(toJson(value)); //循环引用的对象会引发无限递归  
173. sb.append(',');  
174. }  
175. // 将最后的 ',' 变为 '}':  
176. sb.setCharAt(sb.length() - 1, '}');  
177. return sb.toString();  
178. }  
179. /**
180. * 将数组编码为 JSON 格式
181. *
182. * @param array
183. * 数组
184. * @return JSON 格式
185. */  
186. static String array2Json(final Object[] array)  
187. {  
188. if (array.length == 0)  
189. {  
190. return "[]";  
191. }  
192. final StringBuilder sb = new StringBuilder(array.length << 4); //4次方  
193. sb.append('[');  
194. for (final Object o : array)  
195. {  
196. sb.append(toJson(o));  
197. sb.append(',');  
198. }  
199.   
200. // 将最后添加的 ',' 变为 ']':  
201. sb.setCharAt(sb.length() - 1, ']');  
202. return sb.toString();  
203. }  
204. static String intArray2Json(final int[] array)  
205. {  
206. if (array.length == 0)  
207. {  
208. return "[]";  
209. }  
210. final StringBuilder sb = new StringBuilder(array.length << 4);  
211. sb.append('[');  
212. for (final int o : array)  
213. {  
214. sb.append(Integer.toString(o));  
215. sb.append(',');  
216. }  
217. // set last ',' to ']':  
218. sb.setCharAt(sb.length() - 1, ']');  
219. return sb.toString();  
220. }  
221. static String longArray2Json(final long[] array)  
222. {  
223. if (array.length == 0)  
224. {  
225. return "[]";  
226. }  
227. final StringBuilder sb = new StringBuilder(array.length << 4);  
228. sb.append('[');  
229. for (final long o : array)  
230. {  
231. sb.append(Long.toString(o));  
232. sb.append(',');  
233. }  
234. // set last ',' to ']':  
235. sb.setCharAt(sb.length() - 1, ']');  
236. return sb.toString();  
237. }  
238. static String booleanArray2Json(final boolean[] array)  
239. {  
240. if (array.length == 0)  
241. {  
242. return "[]";  
243. }  
244. final StringBuilder sb = new StringBuilder(array.length << 4);  
245. sb.append('[');  
246. for (final boolean o : array)  
247. {  
248. sb.append(Boolean.toString(o));  
249. sb.append(',');  
250. }  
251. // set last ',' to ']':  
252. sb.setCharAt(sb.length() - 1, ']');  
253. return sb.toString();  
254. }  
255. static String floatArray2Json(final float[] array)  
256. {  
257. if (array.length == 0)  
258. {  
259. return "[]";  
260. }  
261. final StringBuilder sb = new StringBuilder(array.length << 4);  
262. sb.append('[');  
263. for (final float o : array)  
264. {  
265. sb.append(Float.toString(o));  
266. sb.append(',');  
267. }  
268. // set last ',' to ']':  
269. sb.setCharAt(sb.length() - 1, ']');  
270. return sb.toString();  
271. }  
272. static String doubleArray2Json(final double[] array)  
273. {  
274. if (array.length == 0)  
275. {  
276. return "[]";  
277. }  
278. final StringBuilder sb = new StringBuilder(array.length << 4);  
279. sb.append('[');  
280. for (final double o : array)  
281. {  
282. sb.append(Double.toString(o));  
283. sb.append(',');  
284. }  
285. // set last ',' to ']':  
286. sb.setCharAt(sb.length() - 1, ']');  
287. return sb.toString();  
288. }  
289. static String shortArray2Json(final short[] array)  
290. {  
291. if (array.length == 0)  
292. {  
293. return "[]";  
294. }  
295. final StringBuilder sb = new StringBuilder(array.length << 4);  
296. sb.append('[');  
297. for (final short o : array)  
298. {  
299. sb.append(Short.toString(o));  
300. sb.append(',');  
301. }  
302. // set last ',' to ']':  
303. sb.setCharAt(sb.length() - 1, ']');  
304. return sb.toString();  
305. }  
306. static String byteArray2Json(final byte[] array)  
307. {  
308. if (array.length == 0)  
309. {  
310. return "[]";  
311. }  
312. final StringBuilder sb = new StringBuilder(array.length << 4);  
313. sb.append('[');  
314. for (final byte o : array)  
315. {  
316. sb.append(Byte.toString(o));  
317. sb.append(',');  
318. }  
319. // set last ',' to ']':  
320. sb.setCharAt(sb.length() - 1, ']');  
321. return sb.toString();  
322. }  
323. public static String object2Json(final Object bean)  
324. {  
325. //数据检查  
326. if (bean == null)  
327. {  
328. return "{}";  
329. }  
330. final Method[] methods = bean.getClass().getMethods(); //方法数组  
331. final StringBuilder sb = new StringBuilder(methods.length << 4); //4次方  
332. sb.append('{');  
333. for (final Method method : methods)  
334. {  
335. try  
336. {  
337. final String name = method.getName();  
338. String key = "";  
339. if (name.startsWith("get"))  
340. {  
341. key = name.substring(3);  
342. //防死循环  
343. final String[] arrs =  
344. { "Class" };  
345. boolean bl = false;  
346. for (final String s : arrs)  
347. {  
348. if (s.equals(key))  
349. {  
350. bl = true;  
351. continue;  
352. }  
353. }  
354. if (bl)  
355. {  
356. continue; //防死循环  
357. }  
358. }  
359. else if (name.startsWith("is"))  
360. {  
361. key = name.substring(2);  
362. }  
363. if (key.length() > 0 && Character.isUpperCase(key.charAt(0)) && method.getParameterTypes().length == 0)  
364. {  
365. if (key.length() == 1)  
366. {  
367. key = key.toLowerCase();  
368. }  
369. else if (!Character.isUpperCase(key.charAt(1)))  
370. {  
371. key = key.substring(0, 1).toLowerCase() + key.substring(1);  
372. }  
373. final Object elementObj = method.invoke(bean);  
374. //System.out.println("###" + key + ":" + elementObj.toString());  
375. sb.append('\"');  
376. sb.append(key); //不能包含特殊字符  
377. sb.append('\"');  
378. sb.append(':');  
379. sb.append(toJson(elementObj)); //循环引用的对象会引发无限递归  
380. sb.append(',');  
381. }  
382. }  
383. catch (final Exception e)  
384. {  
385. //e.getMessage();  
386. throw new RuntimeException("在将bean封装成JSON格式时异常:" + e.getMessage(), e);  
387. }  
388. }  
389. if (sb.length() == 1)  
390. {  
391. return bean.toString();  
392. }  
393. else  
394. {  
395. sb.setCharAt(sb.length() - 1, '}');  
396. return sb.toString();}  
397. }  
398. private JsonUtil(){  
399. }  
400. }