Android常用实用功能代码片大全

2024-02-05 03:48

本文主要是介绍Android常用实用功能代码片大全,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

转: http://www.it165.NET/pro/html/201504/38370.html?bsh_bid=950898232


\

如图

运行模拟器的时候总是会内存错误。




这种情况偶尔出现,没什么关系,不用管他。点击‘取消’就可以了。

经常出现就危险了,弄不好就得重装系统了。

运行某些程序的时候,有时会出现内存错误的提示,然后该程序就关闭。
“0x????????”指令引用的“0x????????”内存。该内存不能为“read”。
“0x????????”指令引用的“0x????????”内存,该内存不能为“written”。
一般出现这个现象有方面的,一是硬件,即内存方面有问题,二是软件

开始 运行 输入:cmd 确定:

在DOS提示符下输入:

for %1 in (%windir%system32*.dll) do regsvr32.exe /s %1

等待3分钟,左右后,搞定了。(如果怕输错,就把这句话复制上去)。

 

 

四十七、通过路径获取媒体文件信息

 

通过路径获取媒体文件信息 http://blog.csdn.Net/aomandeshangxiao/article/details/6600725

四十八、Java中有用的文件操作

Java文件操作 http://blog.csdn.net/aomandeshangxiao/article/details/6597302

 

四十九、Android文件读写

Android文件的读写 http://blog.csdn.net/aomandeshangxiao/article/details/6589510

五十、 scaleType属性与ImagView中图片的显示的关系

 

五十一、 Notification的属性notification的各种属性:
http://blog.csdn.net/aomandeshangxiao/article/details/6608101

 

五十二、Android控件实现震动:
先在res下面新创建anim文件夹,在该文件夹中创建shake.xml文件:
view source print ?
1. <?xml version="1.0" encoding="utf-8"?>
2. <translate xmlns:android="http://schemas.android.com/apk/res/android"
3. android:duration="1000"
4. android:fromYDelta="0"
5. android:toYDelta="10"
6. android:fromXDelta="0"
7. android:toXDelta="10"
8. android:interpolator="@anim/cycle_7" />

最后引用了cycle_7,再在该文件夹中创建cycle_7.xml文件

 

view source print ?
1. <?xml version="1.0" encoding="utf-8"?>
2.  
3. <cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android"
4. android:cycles="10" />

在Java代码里面:

 

 

view source print ?
1. Animation shake = AnimationUtils.loadAnimation(this, R.anim.shake);
2. findViewById(R.id.image).startAnimation(shake);

 

五十三、Android 页面切换动画效果

 

http://hi.baidu.com/fountainblog/blog/item/66cb9918b0220eaa4bedbc2e.html

 

五十四、Android2.2完全退出程序
http://www.eoeandroid.com/thread-62284-1-1.html

 

五十五、Android按下back键非退出隐藏到后台

 

 

view source print ?
01. public boolean onKeyDown(int keyCode, KeyEvent event) { 
02. if (keyCode == KeyEvent.KEYCODE_BACK) { 
03. Intent intent = new Intent(Intent.ACTION_MAIN); 
04. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
05. intent.addCategory(Intent.CATEGORY_HOME); 
06. startActivity(intent); 
07. return true
08.
09. return super.onKeyDown(keyCode, event); 
10. }

 

 

五十六、在Android开发中使用Gallery实现多级联动

 

http://mobile.51cto.com/hot-230282.htm

 

五十七、获取view在屏幕中的位置:
view source print ?
1. int[] points = { 00 };
2. view.getLocationInWindow(points);

这里用数组存储view的x和y坐标,point[0]是x坐标,point[1]是y坐标。

 

 

五十八、在图形中添加文字
view source print ?
01. @Override
02. protected synchronized void onDraw(Canvas canvas) {
03. super.onDraw(canvas);
04. Rect rect = new Rect();
05. this.mPaint.getTextBounds(this.text, 0this.text.length(), rect);
06. int x = (getWidth() / 2) - rect.centerX();
07. int y = (getHeight() / 2) - rect.centerY();
08. canvas.drawText(this.text, x, y, this.mPaint);
09. }


 

五十九、使用Vibrator实现手机震动

 

view source print ?
01. @Override
02. public boolean onTouchEvent(MotionEvent event) {
03.  
04. if(event.getAction() == MotionEvent.ACTION_DOWN){
05. vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE);
06. long[] pattern = {80040,40030}; // OFF/ON/OFF/ON...
07. vibrator.vibrate(pattern, 2);//-1不重复,非-1为从pattern的指定下标开始重复
08. }
09. return super.onTouchEvent(event);
10. }

 

 

 

六十、界面重绘

 

invalidate()或者view.postinvalidate()方法

 

六十一、Android创建桌面快捷方式:
view source print ?
01. /**
02. * 为程序创建桌面快捷方式
03. */
04. private void addShortcut(){ 
05. Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); 
06.  
07. //快捷方式的名称 
08. shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); 
09. shortcut.putExtra("duplicate"false); //不允许重复创建 
10.  
11. //指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer 
12. //注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序 
13. ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName()); 
14. shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); 
15.  
16. //快捷方式的图标 
17. ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this, R.drawable.icon); 
18. shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); 
19.  
20. sendBroadcast(shortcut); 
21. }

 

需要声明权限

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

参考博客:

 

http://www.cnblogs.com/-OYK/archive/2011/05/31/2064797.html

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.FILTE

 

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

 

 

view source print ?
01. public class SDFileExplorer extends Activity{
02. ListView listView;
03. TextView textView;
04. // 记录当前的父文件夹
05. File currentParent;
06. // 记录当前路径下的所有文件的文件数组
07. File[] currentFiles;
08.  
09. @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. File root = 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. listView.setOnItemClickListener(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. Toast.makeText(SDFileExplorer.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. parent.setOnClickListener(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. List<Map<String, Object>> listItems = new ArrayList<Map<String, Object>>();
73. for (int i = 0; i < files.length; i++){
74. Map<String, Object> listItem = new HashMap<String, Object>();
75. //如果当前File是文件夹,使用folder图标;否则使用file图标
76. if (files[i].isDirectory()){
77. listItem.put("icon", R.drawable.folder);
78. }else{
79. listItem.put("icon", R.drawable.file);
80. }
81. listItem.put("fileName", files[i].getName());
82. //添加List项
83. listItems.add(listItem);
84. }
85. // 创建一个SimpleAdapter
86. SimpleAdapter simpleAdapter = new SimpleAdapter(this, listItems,
87. R.layout.line, new String[] { "icon""fileName" }, new int[] {
88. R.id.icon, R.id.file_name });
89. // 为ListView设置Adapter
90. listView.setAdapter(simpleAdapter);
91. try{
92. textView.setText("当前路径为:" + currentParent.getCanonicalPath());
93. }catch (IOException e){
94. e.printStackTrace();
95. }
96. }
97. }

 

 

六十四、Android标题栏显示progressBar
view source print ?
1. protected void onCreate(Bundle savedInstanceState) {
2. super.onCreate(savedInstanceState);
3. requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);//先给Activity注册界面进度条功能
4. setContentView(R.layout.main);
5. setProgressBarIndeterminateVisibility(true);//在需要显示进度条的时候调用这个方法
6. setProgressBarIndeterminateVisibility(false);//在不需要显示进度条的时候调用这个方法
7. }

 

 

六十五、单击EditText全选内容

 

view source print ?
01. percent.setOnTouchListener(this);
02.  
03. @Override
04. public boolean onTouch(View v, MotionEvent event) {
05. if(v.getId()==R.id.seekPercent) {
06. percent.selectAll();
07. InputMethodManager imm = (InputMethodManager)
08. context.getSystemService(Context.INPUT_METHOD_SERVICE);
09. imm.showSoftInput(v, 0);
10. return true;
11. }
12. return false;
13. }

 

六十六、Android设置图片圆角
view source print ?
01. /**
02. * 将图片设置为圆角
03. */
04. public static Bitmap toRoundCorner(Bitmap bitmap, int pixels) {
05. Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
06. bitmap.getHeight(), Config.ARGB_8888);
07. Canvas canvas = new Canvas(output);
08. final int color = 0xff424242;
09. final Paint paint = new Paint();
10. final Rect rect = new Rect(00, bitmap.getWidth(), bitmap.getHeight());
11. final RectF rectF = new RectF(rect);
12. final float roundPx = pixels;
13. paint.setAntiAlias(true);
14. canvas.drawARGB(0000);
15. paint.setColor(color);
16. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
17. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
18. canvas.drawBitmap(bitmap, rect, rect, paint);
19. return output;
20. }

 

 

六十七、把图片转换成圆形
view source print ?
01. bitmap = ((BitmapDrawable)imageView1.getDrawable()).getBitmap();
02. bitmap = getRoundedCornerBitmap(bitmap);
03. imageView1.setImageBitmap(bitmap);
04.  
05. public static Bitmap getRoundedCornerBitmap(Bitmap bitmap) {
06. Bitmap output = Bitmap.createBitmap(bitmap.getWidth(),
07. bitmap.getHeight(), Config.ARGB_8888);
08. Canvas canvas = new Canvas(output);
09.  
10. final int color = 0xff424242;
11. final Paint paint = new Paint();
12. final Rect rect = new Rect(00, bitmap.getWidth(), bitmap.getHeight());
13. final RectF rectF = new RectF(rect);
14. final float roundPx = bitmap.getWidth() / 2;
15.  
16. paint.setAntiAlias(true);
17. canvas.drawARGB(0000);
18. paint.setColor(color);
19. canvas.drawRoundRect(rectF, roundPx, roundPx, paint);
20.  
21. paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN));
22. canvas.drawBitmap(bitmap, rect, rect, paint);
23. return output;
24. }

 

 

六十八、TextView高级应用

 

 

1. 自定义字体

可以使用setTypeface(Typeface)方法来设置文本框内文本的字体,而android的 Typeface又使用TTF字体文件来设置字体

所以,我们可以在程序中放入TTF字体文件,在程序中使用Typeface来设置字体:第一步,在assets目录下新建fonts目录,把TTF字体文件放到这里。第二步,程序中调用:

TextViewtv = (TextView)findViewById(R.id.textView);

AssetManagermgr=getAssets();//得到AssetManager

Typefacetf=Typeface.createFromAsset(mgr, "fonts/mini.TTF");//根据路径得到Typeface

tv.setTypeface(tf);//设置字体

效果如下图所示:

\

2. 显示多种颜色的字

Android支持html格式的字符串,通过调用Html.fromHtml(str)方法可以转换html格式的字符串str。

示例如下:

StringtextStr1 = "<font color="#ffff00">如果有一天,</font><br>";

StringtextStr2 = "<font color="#00ff00">我厌倦了这里,</font><br>";

StringtextStr3 = "<font color="#ff00ff">我会乘着梦,</font><br>";

StringtextStr4 = "<font color="#00ffff">飞向那个属于自己的<br>世界……</font><br>";

tv.setText(Html.fromHtml(textStr1+textStr2+textStr3+textStr4));

运行后效果如下:

 

\

 

3. 字体加粗

在xml布局文件中使用android:textStyle=”bold”可以将英文设置成粗体,但是不能将中文设置成粗体,将中文设置成粗体的方法是:使用TextPaint的仿“粗体”设置setFakeBoldText为true。示例代码如下:

tv.getPaint().setFakeBoldText(true);

效果如下:


\

4. 添加阴影

在xml布局文件中使用一系列android:shadowXXX属性可添加设置阴影。具体为:shadowColor设置阴影颜色;shadowDx设置阴影水平偏移量;shadowDy设置阴影垂直偏移量;shadowRadius设置阴影半径。

示例代码:

android:shadowColor="#ffffff"

android:shadowDx="15.0"

android:shadowDy="5.0"

android:shadowRadius="2.5"

显示效果如下:

 

\

 

5. 插入图片

插入图片有两种方法,第一种方法就是用上面说的html格式的字符串,不过转换稍微有些麻烦。需要用到ImageGetter类来对图片的src属性进行转换。示例代码如下:

StringimgStr = "<img src=""+R.drawable.sidai+""/>";

Html.ImageGetterimageGetter = new Html.ImageGetter() {

public Drawable getDrawable(Stringarg0) {

// TODO Auto-generated methodstub

int id =Integer.parseInt(arg0);

Drawable draw =getResources().getDrawable(id);

draw.setBounds(10, 10, 228,300);

return draw;

}

};

tv.append(Html.fromHtml(imgStr,imageGetter,null));

第二种方法是使用xml布局文件中一系列android:drawableXXX属性来实现插入图片。具体为:drawableBottom是在文本框内文本的底端绘制指定图像;drawableLeft是在文本框内文本的左边绘制指定图像;drawableRight是在文本框内文本的右边绘制指定图像;drawableTop是在文本框内文本的顶端绘制指定图像;drawablePadding设置文本框内文本与图像之间的间距。示例代码:

android:drawableBottom=”@drawable/sidai”

插入图片后的显示效果如下:

\
六十九、资源plurals表示数量的各种方式,

 

比如:一个教室有多少学生。考虑下面的例子:
there is 1 student;
there are 2 students;
there are 50 students;
显然对于2,50句子格式是一样的,对于1不同,Android支持将这种变体表示为plurals资源。

view source print ?
01. <pre name="code" class="html">    <?xml version="1.0" encoding="utf-8"?> 
02. <resources> 
03. <string name="hello">Hello World, Resource_Plurals!</string> 
04. <string name="app_name">Resource_Plurals</string> 
05. <plurals name="student"
06. <item quantity="one">There is 1 student</item> 
07. <item quantity="other">There are %d  students</item> 
08. </plurals> 
09. </resources>


view source print ?
1.  

在Java代码中获取定义的plurals资源

 

view source print ?
01. public class Resource_Plurals extends Activity { 
02. /** Called when the activity is first created. */ 
03. @Override 
04. public void onCreate(Bundle savedInstanceState) { 
05. super.onCreate(savedInstanceState); 
06. setContentView(R.layout.main); 
07.  
08. Resources r = getResources(); 
09. String s1 = r.getQuantityString(R.plurals.student, 1,1); 
10. Log.i("plurals", s1); 
11. String s2 = r.getQuantityString(R.plurals.student, 2,2); 
12. Log.i("plurals", s2); 
13. String s3 = r.getQuantityString(R.plurals.student, 50,50); 
14. Log.i("plurals", s3); 
15.  
16.
17. }

 

 

七十、Android 自定义json解析类
view source print ?
001. import java.lang.reflect.Method; 
002. import java.util.Collection; 
003. import java.util.Map; 
004. import java.util.Set; 
005. public final class JsonUtil{ 
006. /**
007. * 把对象封装为JSON格式
008. *
009. * @param o
010. * 对象
011. * @return JSON格式
012. */ 
013. @SuppressWarnings"unchecked") 
014. public static String toJson(final Object o){ 
015. if (o == null){ 
016. return "null"; 
017.
018. if (o instanceof String) //String{ 
019. return string2Json((String) o); 
020.
021. if (o instanceof Boolean) //Boolean{ 
022. return boolean2Json((Boolean) o); 
023.
024. if (o instanceof Number) //Number{ 
025. return number2Json((Number) o); 
026.
027. if (o instanceof Map) //Map{ 
028. return map2Json((Map<String, Object>) o); 
029.
030. if (o instanceof Collection) //List Set{ 
031. return collection2Json((Collection) o); 
032.
033. if (o instanceof Object[]) //对象数组{ 
034. return array2Json((Object[]) o); 
035.
036. if (o instanceof int[])//基本类型数组 
037.
038. return intArray2Json((int[]) o); 
039.
040. if (o instanceof boolean[])//基本类型数组 
041.
042. return booleanArray2Json((boolean[]) o); 
043.
044. if (o instanceof long[])//基本类型数组 
045.
046. return longArray2Json((long[]) o); 
047.
048. if (o instanceof float[])//基本类型数组 
049.
050. return floatArray2Json((float[]) o); 
051.
052. if (o instanceof double[])//基本类型数组 
053.
054. return doubleArray2Json((double[]) o); 
055.
056. if (o instanceof short[])//基本类型数组 
057.
058. return shortArray2Json((short[]) o); 
059.
060. if (o instanceof byte[])//基本类型数组 
061.
062. return byteArray2Json((byte[]) o); 
063.
064. if (o instanceof Object) //保底收尾对象 
065.
066. return object2Json(o); 
067.
068. throw new RuntimeException("不支持的类型: " + o.getClass().getName()); 
069.
070. /**
071. * 将 String 对象编码为 JSON格式,只需处理好特殊字符
072. *
073. * @param s
074. * String 对象
075. * @return JSON格式
076. */ 
077. static String string2Json(final String s) 
078.
079. final StringBuilder sb = new StringBuilder(s.length() + 20); 
080. sb.append('"'); 
081. for int i = 0; i < s.length(); i++) 
082.
083. final char c = s.charAt(i); 
084. switch (c) 
085.
086. case '"': 
087. sb.append("\""); 
088. break; 
089. case '\': 
090. sb.append("\\"); 
091. break; 
092. case '/': 
093. sb.append("\/"); 
094. break; 
095. case '': 
096. sb.append("\b"); 
097. break; 
098. case ' ': 
099. sb.append("\f"); 
100. break; 
101. case '
102. ': 
103. sb.append("\n"); 
104. break; 
105. case '
106. ': 
107. sb.append("\r"); 
108. break; 
109. case '  ': 
110. sb.append("\t"); 
111. break; 
112. default: 
113. sb.append(c); 
114.
115.
116. sb.append('"'); 
117. return sb.toString(); 
118.
119. /**
120. * 将 Number 表示为 JSON格式
121. *
122. * @param number
123. * Number
124. * @return JSON格式
125. */ 
126. static String number2Json(final Number number) 
127.
128. return number.toString(); 
129.
130. /**
131. * 将 Boolean 表示为 JSON格式
132. *
133. * @param bool
134. * Boolean
135. * @return JSON格式
136. */ 
137. static String boolean2Json(final Boolean bool) 
138.
139. return bool.toString(); 
140.
141. /**
142. * 将 Collection 编码为 JSON 格式 (List,Set)
143. *
144. * @param c
145. * @return
146. */ 
147. static String collection2Json(final Collection<Object> c) 
148.
149. final Object[] arrObj = c.toArray(); 
150. return toJson(arrObj); 
151.
152. /**
153. * 将 Map<String, Object> 编码为 JSON 格式
154. *
155. * @param map
156. * @return
157. */ 
158. static String map2Json(final Map<String, Object> map) 
159.
160. if (map.isEmpty()) 
161.
162. return "{}"; 
163.
164. final StringBuilder sb = new StringBuilder(map.size() << 4); //4次方 
165. sb.append('{'); 
166. final Set<String> keys = map.keySet(); 
167. for final String key : keys) 
168.
169. final Object value = map.get(key); 
170. sb.append('"'); 
171. sb.append(key); //不能包含特殊字符 
172. sb.append('"'); 
173. sb.append(':'); 
174. sb.append(toJson(value)); //循环引用的对象会引发无限递归 
175. sb.append(','); 
176.
177. // 将最后的 ',' 变为 '}': 
178. sb.setCharAt(sb.length() - 1, '}'); 
179. return sb.toString(); 
180.
181. /**
182. * 将数组编码为 JSON 格式
183. *
184. * @param array
185. * 数组
186. * @return JSON 格式
187. */ 
188. static String array2Json(final Object[] array) 
189.
190. if (array.length == 0) 
191.
192. return "[]"; 
193.
194. final StringBuilder sb = new StringBuilder(array.length << 4); //4次方 
195. sb.append('['); 
196. for final Object o : array) 
197.
198. sb.append(toJson(o)); 
199. sb.append(','); 
200.
201.  
202. // 将最后添加的 ',' 变为 ']': 
203. sb.setCharAt(sb.length() - 1, ']'); 
204. return sb.toString(); 
205.
206. static String intArray2Json(final int[] array) 
207.
208. if (array.length == 0) 
209.
210. return "[]"; 
211.
212. final StringBuilder sb = new StringBuilder(array.length << 4); 
213. sb.append('['); 
214. for final int o : array) 
215.
216. sb.append(Integer.toString(o)); 
217. sb.append(','); 
218.
219. // set last ',' to ']': 
220. sb.setCharAt(sb.length() - 1, ']'); 
221. return sb.toString(); 
222.
223. static String longArray2Json(final long[] array) 
224.
225. if (array.length == 0) 
226.
227. return "[]"; 
228.
229. final StringBuilder sb = new StringBuilder(array.length << 4); 
230. sb.append('['); 
231. for final long o : array) 
232.
233. sb.append(Long.toString(o)); 
234. sb.append(','); 
235.
236. // set last ',' to ']': 
237. sb.setCharAt(sb.length() - 1, ']'); 
238. return sb.toString(); 
239.
240. static String booleanArray2Json(final boolean[] array) 
241.
242. if (array.length == 0) 
243.
244. return "[]"; 
245.
246. final StringBuilder sb = new StringBuilder(array.length << 4); 
247. sb.append('['); 
248. for final boolean o : array) 
249.
250. sb.append(Boolean.toString(o)); 
251. sb.append(','); 
252.
253. // set last ',' to ']': 
254. sb.setCharAt(sb.length() - 1, ']'); 
255. return sb.toString(); 
256.
257. static String floatArray2Json(final float[] array) 
258.
259. if (array.length == 0) 
260.
261. return "[]"; 
262.
263. final StringBuilder sb = new StringBuilder(array.length << 4); 
264. sb.append('['); 
265. for final float o : array) 
266.
267. sb.append(Float.toString(o)); 
268. sb.append(','); 
269.
270. // set last ',' to ']': 
271. sb.setCharAt(sb.length() - 1, ']'); 
272. return sb.toString(); 
273.
274. static String doubleArray2Json(final double[] array) 
275.
276. if (array.length == 0) 
277.
278. return "[]"; 
279.
280. final StringBuilder sb = new StringBuilder(array.length << 4); 
281. sb.append('['); 
282. for final double o : array) 
283.
284. sb.append(Double.toString(o)); 
285. sb.append(','); 
286.
287. // set last ',' to ']': 
288. sb.setCharAt(sb.length() - 1, ']'); 
289. return sb.toString(); 
290.
291. static String shortArray2Json(final short[] array) 
292.
293. if (array.length == 0) 
294.
295. return "[]"; 
296.
297. final StringBuilder sb = new StringBuilder(array.length << 4); 
298. sb.append('['); 
299. for final short o : array) 
300.
301. sb.append(Short.toString(o)); 
302. sb.append(','); 
303.
304. // set last ',' to ']': 
305. sb.setCharAt(sb.length() - 1, ']'); 
306. return sb.toString(); 
307.
308. static String byteArray2Json(final byte[] array) 
309.
310. if (array.length == 0) 
311.
312. return "[]"; 
313.
314. final StringBuilder sb = new StringBuilder(array.length << 4); 
315. sb.append('['); 
316. for final byte o : array) 
317.
318. sb.append(Byte.toString(o)); 
319. sb.append(','); 
320.
321. // set last ',' to ']': 
322. sb.setCharAt(sb.length() - 1, ']'); 
323. return sb.toString(); 
324.
325. public static String object2Json(final Object bean) 
326.
327. //数据检查 
328. if (bean == null) 
329.
330. return "{}"; 
331.
332. final Method[] methods = bean.getClass().getMethods(); //方法数组 
333. final StringBuilder sb = new StringBuilder(methods.length << 4); //4次方 
334. sb.append('{'); 
335. for final Method method : methods) 
336.
337. try 
338.
339. final String name = method.getName(); 
340. String key = ""; 
341. if (name.startsWith("get")) 
342.
343. key = name.substring(3); 
344. //防死循环 
345. final String[] arrs = 
346. "Class" }; 
347. boolean bl = false; 
348. for final String s : arrs) 
349.
350. if (s.equals(key)) 
351.
352. bl = true; 
353. continue; 
354.
355.
356. if (bl) 
357.
358. continue; //防死循环 
359.
360.
361. else if (name.startsWith("is")) 
362.
363. key = name.substring(2); 
364.
365. if (key.length() > 0 && Character.isUpperCase(key.charAt(0)) && method.getParameterTypes().length == 0) 
366.
367. if (key.length() == 1) 
368.
369. key = key.toLowerCase(); 
370.
371. else if (!Character.isUpperCase(key.charAt(1))) 
372.
373. key = key.substring(0, 1).toLowerCase() + key.substring(1); 
374.
375. final Object elementObj = method.invoke(bean); 
376. //System.out.println("###" + key + ":" + elementObj.toString()); 
377. sb.append('"'); 
378. sb.append(key); //不能包含特殊字符 
379. sb.append('"'); 
380. sb.append(':'); 
381. sb.append(toJson(elementObj)); //循环引用的对象会引发无限递归 
382. sb.append(','); 
383.
384.
385. catch final Exception e) 
386.
387. //e.getMessage(); 
388. throw new RuntimeException("在将bean封装成JSON格式时异常:" + e.getMessage(), e); 
389.
390.
391. if (sb.length() == 1) 
392.
393. return bean.toString(); 
394.
395. else 
396.
397. sb.setCharAt(sb.length() - 1, '}'); 
398. return sb.toString();} 
399.
400. private JsonUtil(){ 
401.
402. }

 

 

七十一、android自动跳转

 

有些时候需要类似这样的功能,在一个页面停留2秒后,跳转到另外一个页面!

第一种方法:

 

view source print ?
01. Timer timer = new Timer();
02.  
03. TimerTask timerTask = new TimerTask() {
04.  
05. @Override
06. public void run() {
07. // 你要干的活
08.  
09. }
10. };
11. timer.schedule(timerTask, 1000 2); //2秒后执行

在run()方法里面写上你的跳转就可以了。

 

第二种方法:

view source print ?
01. private final int SPLASH_DISPLAY_LENGHT = 2000;
02.  
03. @Override
04. public void onCreate(Bundle savedInstanceState) {
05. super.onCreate(savedInstanceState);
06. this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
07. WindowManager.LayoutParams.FLAG_FULLSCREEN); 
08. setContentView(R.layout.splash);
09. new Handler().postDelayed(new Runnable() {
10. @Override
11. public void run() {
12. Intent intent = new Intent(Splash.this, XXX.class);
13. Splash.this.startActivity(intent);
14. overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
15. Splash.this.finish();
16. }
17.  
18. }, SPLASH_DISPLAY_LENGHT);
19. }
使用handler延迟2秒后跳转。
 
 
七十二、Gally选中高亮状态

没有选中,在GalleryActivity中,设置gallery.setUnselectedAlpha(0.3f); 透明度为0.3 选中,在ImageAdapter的getView(int position, View convertView, ViewGroup parent)中,设置imageview.setBackgroundColor(Color.alpha(1)); 背景色为1

七十三、TextView颜色设置

 

view source print ?
1. android:textColor                    //设置文本颜色
2.  
3. android:textColorHighlight           //被选中文字的底色,默认为蓝色
4.  
5. android:textColorHint                //设置提示信息文字的颜色,默认为灰色。与hint一起使用。

 

 

七十四、Button使用Shape
view source print ?
01. <?xml version="1.0" encoding="utf-8"?>
02. <selector
03. xmlns:android="http://schemas.android.com/apk/res/android">
04. <item android:state_pressed="true" >
05. <shape>
06. <gradient
07. android:startColor="#ff8c00"
08. android:endColor="#FFFFFF"
09. android:angle="270" />
10. <stroke
11. android:width="2dp"
12. android:color="#dcdcdc" />
13. <corners
14. android:radius="2dp" />
15. <padding
16. android:left="10dp"
17. android:top="10dp"
18. android:right="10dp"
19. android:bottom="10dp" />
20. </shape>
21. </item>     <item android:state_focused="true" >
22. <shape>
23. <gradient
24. android:startColor="#ffc2b7"
25. android:endColor="#ffc2b7"
26. android:angle="270" />
27. <stroke
28. android:width="2dp"
29. android:color="#dcdcdc" />
30. <corners
31. android:radius="2dp" />
32. <padding
33. android:left="10dp"
34. android:top="10dp"
35. android:right="10dp"
36. android:bottom="10dp" />
37. </shape>
38. </item>     <item>     
39. <shape>
40. <gradient
41. android:startColor="#ff9d77"
42. android:endColor="#ff9d77"
43. android:angle="270" />
44. <stroke
45. android:width="2dp"
46. android:color="#fad3cf" />
47. <corners
48. android:radius="2dp" />
49. <padding
50. android:left="10dp"
51. android:top="10dp"
52. android:right="10dp"
53. android:bottom="10dp" />
54. </shape>
55. </item>
56. </selector>

 

 

七十五、Android Drawable叠加处理方法

 

大家可能知道Bitmap的叠加处理在Android平台中可以通过Canvas一层一层的画就行了,而Drawable中如何处理呢? 除了使用BitmapDrawable的getBitmap方法将Drawable转换为Bitmap外,今天Android123给大家说下好用简单的LayerDrawable类,LayerDrawable顾名思义就是层图形对象。下面直接用一个简单的代码表示:

view source print ?
1. Bitmap bm = BitmapFactory.decodeResource(getResources(),R.drawable.cwj);
2. Drawable[] array = new Drawable[3];      array[0] = new PaintDrawable(Color.BLACK); //黑色
3. array[1] = new PaintDrawable(Color.WHITE); //白色
4. array[2] = new BitmapDrawable(bm); //位图资源
5. LayerDrawable ld = new LayerDrawable(array); //参数为上面的Drawable数组
6. ld.setLayerInset(11111);  //第一个参数1代表数组的第二个元素,为白色
7. ld.setLayerInset(22222); //第一个参数2代表数组的第三个元素,为位图资源
8. mImageView.setImageDrawable(ld);

上面的方法中LayerDrawable是关键,Android开发网提示setLayerInset方法原型为public void setLayerInset (int index, int l, int t, int r, int b) 其中第一个参数为层的索引号,后面的四个参数分别为left、top、right和bottom。对于简单的图片合成我们可以将第一和第二层的PaintDrawable换成BitmapDrawable即可实现简单的图片合成。

 

七十六、Android发信息时观察者

 

发信息大致的流程是:

观察者,ContentObserver

观察信息变化,它只能观察所有 就是 :Uri:content://sms/

你点击了发送按钮后,状态还是正在发送,这时这条信息已在你不注意时插入到发件箱中(调用 onChange一次,你可以查一下outbox的内容),当发送成功后(就会打发件箱的临时信息删除 又调用一次 onChange),成功后插入到已发信息sent(这是又会调用 onChange),它会调用三次,所以你们在观察发送信息时会出现onChange出现三次,这个解决方案我暂时只想到两种方案:

view source print ?
01. 1:就是在contetnobserver类里定义一个变量 int count=0;
02.  
03. @Override
04.  
05. public void onChange(boolean selfChange) {
06.  
07. count++;
08.  
09. //调用第三次才是已发信息
10.  
11. if(count==3){
12.  
13. //代表发送了一条信息
14.  
15. Log.i("wet""发送了一条信息");
16.  
17. count=0;//以便第下次用
18.  
19. }
20.  
21.  
22.  
23. 2:还有一个是:
24.  
25. 记录  context.getContentResolver().query(Uri.parse("content://sms/sent"), nullnullnullnull);
26.  
27. 首先记录它上次的条数
28.  
29. 然后再记录它这次的条数,如果改变了,那就代表它改变了

 

七十七、Android屏幕解锁和点亮屏幕

 

最近在做一个闹钟的项目,当闹钟响起的时候需要用到自动解锁和点亮屏幕,因此记录一下解屏幕锁与点亮屏幕的代码:

view source print ?
01. KeyguardManager  km= (KeyguardManager) getSystemService(Context.KEYGUARD_SERVICE); //得到键盘锁管理器对象
02. KeyguardLock kl = km.newKeyguardLock("unLock"); //参数是LogCat里用的Tag
03.  
04. kl.disableKeyguard(); //解锁
05.  
06. PowerManager pm=(PowerManager) getSystemService(Context.POWER_SERVICE);//获取电源管理器对象
07. PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.SCREEN_DIM_WAKE_LOCK, "bright");
08. //获取PowerManager.WakeLock对象,后面的参数|表示同时传入两个值,最后的是LogCat里用的Tag
09. wl.acquire();//点亮屏幕
10. wl.release();//释放
11.  
12. 要实现自动解锁和点亮屏幕的功能则需要在AndroidManifest.xml添加权限:
13.  
14. <uses-permission android:name="android.permission.WAKE_LOCK" />
15. <uses-permission android:name="android.permission.DISABLE_KEYGUARD" />

 

七十八、去掉listView中间隔断线
view source print ?
1. 方法1:listView.setDividerHeight(0);
2. 方法2this.getListView().setDivider(null);
3. 方法3:android:divider="@null"
4.  
5. android:cacheColorHint="#00000000" 设置其为透明!! 默认为黑色!!!!!

这篇关于Android常用实用功能代码片大全的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/679676

相关文章

Python如何去除图片干扰代码示例

《Python如何去除图片干扰代码示例》图片降噪是一个广泛应用于图像处理的技术,可以提高图像质量和相关应用的效果,:本文主要介绍Python如何去除图片干扰的相关资料,文中通过代码介绍的非常详细,... 目录一、噪声去除1. 高斯噪声(像素值正态分布扰动)2. 椒盐噪声(随机黑白像素点)3. 复杂噪声(如伪

Java Spring ApplicationEvent 代码示例解析

《JavaSpringApplicationEvent代码示例解析》本文解析了Spring事件机制,涵盖核心概念(发布-订阅/观察者模式)、代码实现(事件定义、发布、监听)及高级应用(异步处理、... 目录一、Spring 事件机制核心概念1. 事件驱动架构模型2. 核心组件二、代码示例解析1. 事件定义

gitlab安装及邮箱配置和常用使用方式

《gitlab安装及邮箱配置和常用使用方式》:本文主要介绍gitlab安装及邮箱配置和常用使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装GitLab2.配置GitLab邮件服务3.GitLab的账号注册邮箱验证及其分组4.gitlab分支和标签的

Python常用命令提示符使用方法详解

《Python常用命令提示符使用方法详解》在学习python的过程中,我们需要用到命令提示符(CMD)进行环境的配置,:本文主要介绍Python常用命令提示符使用方法的相关资料,文中通过代码介绍的... 目录一、python环境基础命令【Windows】1、检查Python是否安装2、 查看Python的安

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

python判断文件是否存在常用的几种方式

《python判断文件是否存在常用的几种方式》在Python中我们在读写文件之前,首先要做的事情就是判断文件是否存在,否则很容易发生错误的情况,:本文主要介绍python判断文件是否存在常用的几种... 目录1. 使用 os.path.exists()2. 使用 os.path.isfile()3. 使用

Java中Map.Entry()含义及方法使用代码

《Java中Map.Entry()含义及方法使用代码》:本文主要介绍Java中Map.Entry()含义及方法使用的相关资料,Map.Entry是Java中Map的静态内部接口,用于表示键值对,其... 目录前言 Map.Entry作用核心方法常见使用场景1. 遍历 Map 的所有键值对2. 直接修改 Ma

深入解析 Java Future 类及代码示例

《深入解析JavaFuture类及代码示例》JavaFuture是java.util.concurrent包中用于表示异步计算结果的核心接口,下面给大家介绍JavaFuture类及实例代码,感兴... 目录一、Future 类概述二、核心工作机制代码示例执行流程2. 状态机模型3. 核心方法解析行为总结:三

python获取cmd环境变量值的实现代码

《python获取cmd环境变量值的实现代码》:本文主要介绍在Python中获取命令行(cmd)环境变量的值,可以使用标准库中的os模块,需要的朋友可以参考下... 前言全局说明在执行py过程中,总要使用到系统环境变量一、说明1.1 环境:Windows 11 家庭版 24H2 26100.4061

pandas实现数据concat拼接的示例代码

《pandas实现数据concat拼接的示例代码》pandas.concat用于合并DataFrame或Series,本文主要介绍了pandas实现数据concat拼接的示例代码,具有一定的参考价值,... 目录语法示例:使用pandas.concat合并数据默认的concat:参数axis=0,join=