android开发实用代码片段
来源:互联网 发布:mysql入门经典 编辑:程序博客网 时间:2024/06/05 21:10
这里积累了一些不常见确又很实用的代码,详情内容来自农民伯伯。博客园:http://www.cnblogs.com 农民伯伯: http://over140.cnblogs.com
1、 精确获取屏幕尺寸(例如:3.5、4.0、5.0寸屏幕)
- public static double getScreenPhysicalSize(Activity ctx) {
- DisplayMetrics dm = new DisplayMetrics();
- ctx.getWindowManager().getDefaultDisplay().getMetrics(dm);
- double diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2) + Math.pow(dm.heightPixels, 2));
- return diagonalPixels / (160 * dm.density);
- }
2、 判断是否是平板(官方用法)
- public static boolean isTablet(Context context) {
- return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;
- }
3、 文字根据状态更改颜色 android:textColor
- <selector xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:color="#53c1bd" android:state_selected="true"/>
- <item android:color="#53c1bd" android:state_focused="true"/>
- <item android:color="#53c1bd" android:state_pressed="true"/>
- <item android:color="#777777"/>
- </selector>
放在res/color/目录下
4、背景色根据状态更改颜色 android:backgroup
5、 启动APK的默认Activity
7、计算字宽
- public static float GetTextWidth(String text, float Size) {
- TextPaint FontPaint = new TextPaint();
- FontPaint.setTextSize(Size);
- return FontPaint.measureText(text);
- }
注意如果设置了textStyle,还需要进一步设置TextPaint。
8、获取应用程序下所有Activity
- <span style="font-size:14px;line-height: 1.5;"></span><pre name="code" class="java">public static ArrayList<String> getActivities(Context ctx) {
- ArrayList<String> result = new ArrayList<String>();
- Intent intent = new Intent(Intent.ACTION_MAIN, null);
- intent.setPackage(ctx.getPackageName());
- for (ResolveInfo info : ctx.getPackageManager().queryIntentActivities(intent, 0)) {
- result.add(info.activityInfo.name);
- }
- return result;
- }
9、检测字符串中是否包含汉字
- public static boolean checkChinese(String sequence) {
- final String format = "[\\u4E00-\\u9FA5\\uF900-\\uFA2D]";
- boolean result = false;
- Pattern pattern = Pattern.compile(format);
- Matcher matcher = pattern.matcher(sequence);
- result = matcher.find();
- return result;
- }
10、检测字符串中只能包含:中文、数字、下划线(_)、横线(-)
- public static boolean checkNickname(String sequence) {
- final String format = "[^\\u4E00-\\u9FA5\\uF900-\\uFA2D\\w-_]";
- Pattern pattern = Pattern.compile(format);
- Matcher matcher = pattern.matcher(sequence);
- return !matcher.find();
- }
11、检查有没有应用程序来接受处理你发出的intent
- public static boolean isIntentAvailable(Context context, String action) {
- final PackageManager packageManager = context.getPackageManager();
- final Intent intent = new Intent(action);
- List<ResolveInfo> list = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
- return list.size() > 0;
- }
12、使用TransitionDrawable实现渐变效果
- private void setImageBitmap(ImageView imageView, Bitmap bitmap) {
- // Use TransitionDrawable to fade in.
- final TransitionDrawable td = new TransitionDrawable(new Drawable[] { new ColorDrawable(android.R.color.transparent), new BitmapDrawable(mContext.getResources(), bitmap) });
- //noinspection deprecation
- imageView.setBackgroundDrawable(imageView.getDrawable());
- imageView.setImageDrawable(td);
- td.startTransition(200);
- }
比使用AlphaAnimation效果要好,可避免出现闪烁问题。
13、 扫描指定的文件
- sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, uri));
用途:从本软件新增、修改、删除图片、文件某一个文件(音频、视频)需要更新系统媒体库时使用,不必扫描整个SD卡。
14、dip转px
- public static int dipToPX(final Context ctx, float dip) {
- return (int)TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, dip, ctx.getResources().getDisplayMetrics());
- }
用途:难免在Activity代码中设置位置、大小等,本方法就很有用了!
15、获取已经安装APK的路径
- PackageManager pm = getPackageManager();
- for (ApplicationInfo app : pm.getInstalledApplications(0)) {
- Log.d("PackageList", "package: " + app.packageName + ", sourceDir: " + app.sourceDir);
- }
- 输出如下:
- package: com.tmobile.thememanager, sourceDir: /system/app/ThemeManager.apk
- package: com.touchtype.swiftkey, sourceDir: /data/app/com.touchtype.swiftkey-1.apk
16、 多进程Preferences数据共享
- public static void putStringProcess(Context ctx, String key, String value) {
- SharedPreferences sharedPreferences = ctx.getSharedPreferences("preference_mu", Context.MODE_MULTI_PROCESS);
- Editor editor = sharedPreferences.edit();
- editor.putString(key, value);
- editor.commit();
- }
- public static String getStringProcess(Context ctx, String key, String defValue) {
- SharedPreferences sharedPreferences = ctx.getSharedPreferences("preference_mu", Context.MODE_MULTI_PROCESS);
- return sharedPreferences.getString(key, defValue);
- }
相关文章:http://zengrong.net/post/1687.htm
17、泛型ArrayList转数组
- @SuppressWarnings("unchecked")
- public static <T> T[] toArray(Class<?> cls, ArrayList<T> items) {
- if (items == null || items.size() == 0) {
- return (T[]) Array.newInstance(cls, 0);
- }
- return items.toArray((T[]) Array.newInstance(cls, items.size()));
- }
18、 保存恢复ListView当前位置
19、调用 便携式热点和数据共享 设置
- public static Intent getHotspotSetting() {
- Intent intent = new Intent();
- intent.setAction(Intent.ACTION_MAIN);
- ComponentName com = new ComponentName("com.android.settings", "com.android.settings.TetherSettings");
- intent.setComponent(com);
- return intent;
- }
20、 格式化输出IP地址
- public static String getIp(Context ctx) {
- return Formatter.formatIpAddress((WifiManager) ctx.getSystemService(Context.WIFI_SERVICE).getConnectionInfo().getIpAddress());
- }
21、 文件夹排序(先文件夹排序,后文件排序)
- public static void sortFiles(File[] files) {
- Arrays.sort(files, new Comparator<File>() {
- @Override
- public int compare(File lhs, File rhs) {
- //返回负数表示o1 小于o2,返回0 表示o1和o2相等,返回正数表示o1大于o2。
- boolean l1 = lhs.isDirectory();
- boolean l2 = rhs.isDirectory();
- if (l1 && !l2)
- return -1;
- else if (!l1 && l2)
- return 1;
- else {
- return lhs.getName().compareTo(rhs.getName());
- }
- }
- });
- }
22、发送不重复的通知(Notification)
代码说明:关键点在这个requestCode,这里使用的是当前系统时间,巧妙的保证了每次都是一个新的Notification产生。
23、代码设置TextView的样式
使用过自定义Dialog可能马上会想到用如下代码:
- new TextView(this,null,R.style.text_style);
- new TextView(new ContextThemeWrapper(this, R.style.text_style))
24、 ip地址转成8位十六进制串
25、WebView保留缩放功能但隐藏缩放控件
- mWebView.getSettings().setSupportZoom(true);
- mWebView.getSettings().setBuiltInZoomControls(true);
- if (DeviceUtils.hasHoneycomb())
- mWebView.getSettings().setDisplayZoomControls(false);
注意:setDisplayZoomControls是在API Level 11中新增。
26、获取网络类型名称
27、Android解压Zip包
- /**
- * 解压一个压缩文档 到指定位置
- *
- * @param zipFileString 压缩包的名字
- * @param outPathString 指定的路径
- * @throws Exception
- */
- public static void UnZipFolder(String zipFileString, String outPathString) throws Exception {
- java.util.zip.ZipInputStream inZip = new java.util.zip.ZipInputStream(new java.io.FileInputStream(zipFileString));
- java.util.zip.ZipEntry zipEntry;
- String szName = "";
- while ((zipEntry = inZip.getNextEntry()) != null) {
- szName = zipEntry.getName();
- if (zipEntry.isDirectory()) {
- // get the folder name of the widget
- szName = szName.substring(0, szName.length() - 1);
- java.io.File folder = new java.io.File(outPathString + java.io.File.separator + szName);
- folder.mkdirs();
- } else {
- java.io.File file = new java.io.File(outPathString + java.io.File.separator + szName);
- file.createNewFile();
- // get the output stream of the file
- java.io.FileOutputStream out = new java.io.FileOutputStream(file);
- int len;
- byte[] buffer = new byte[1024];
- // read (len) bytes into buffer
- while ((len = inZip.read(buffer)) != -1) {
- // write (len) byte from buffer at the position 0
- out.write(buffer, 0, len);
- out.flush();
- }
- out.close();
- }
- }//end of while
- inZip.close();
- }
28、 从assets中读取文本和图片资源
- android开发实用代码片段
- android开发实用代码片段
- Android开发实用代码片段(一)
- Android开发实用代码片段(二)
- Android实用代码片段
- android实用代码片段
- android实用代码片段
- Android实用代码片段
- android 实用代码片段
- Android实用代码片段
- Android 实用代码片段
- [代码片段] Android实用代码片段整合
- android 实用代码片段整理
- Android实用代码片段整合
- Android实用代码片段整合
- android实用代码片段(一)
- Android实用代码片段整合
- Android实用代码片段整合
- oj1E
- Linux系统下UDP发送和接收广播消息小例子
- 解剖AndroidPN消息推送
- 第2次实验——算法基本功 与 综合思考
- .net平台 基于 XMPP协议的即时消息服务端简单实现
- android开发实用代码片段
- 关于联合体union的详细解释
- 各种小问题
- 第2次实验——算法基本功 与 综合思考
- 黑马程序员——OC中的类
- Innodb共享表空间VS独立表空间
- MFC绘图
- 测试AtomicInteger与普通int值在多线程下的递增操作
- SpringMVC经典系列-01简介SpringMVC---【LinusZhu】