从网上找的Android实用代码,记录备用

2024-03-24 09:32

本文主要是介绍从网上找的Android实用代码,记录备用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、获取应用程序下所有Activity

1
2
3
4
5
6
7
8
9
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;}

2、检测字符串中是否包含汉字

1
2
3
4
5
6
7
8
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;}

3、检测字符串中只能包含:中文、数字、下划线(_)、横线(-)

1
2
3
4
5
6
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();}

4、检查有没有应用程序来接受处理你发出的intent

1
2
3
4
5
6
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;}

5、使用TransitionDrawable实现渐变效果(比使用AlphaAnimation效果要好,可避免出现闪烁问题)

1
2
3
4
5
6
7
8
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 deprecationimageView.setBackgroundDrawable(imageView.getDrawable());imageView.setImageDrawable(td);td.startTransition(200);}

6、Android中dp、sp和px的相互转换
(在此之前px和sp相互转换一直都用density,后来才发现是错的,有些手机上density和scaledDensity的值一样所以没发现有什么区别,但是在大分辨率的手机上两个值不一样,导致转换出来的字体尺寸有问题)

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
/**
  * 将px值转换为dip或dp值,保证尺寸大小不变
  * 
  * @param pxValue
  * @param scale(DisplayMetrics类中属性density)
  * @return
  */public static int px2dip(float pxValue, float scale) {return (int) (pxValue / scale + 0.5f);}/**
  * 将dip或dp值转换为px值,保证尺寸大小不变
  * 
  * @param dipValue
  * @param scale(DisplayMetrics类中属性density)
  * @return
  */public static int dip2px(float dipValue, float scale) {return (int) (dipValue * scale + 0.5f);}/**
  * 将px值转换为sp值,保证文字大小不变
  * 
  * @param pxValue
  * @param fontScale(DisplayMetrics类中属性scaledDensity)
  * @return
  */public static int px2sp(float pxValue, float fontScale) {return (int) (pxValue / fontScale + 0.5f);}/**
  * 将sp值转换为px值,保证文字大小不变
  * 
  * @param spValue
  * @param fontScale(DisplayMetrics类中属性scaledDensity)
  * @return
  */public static int sp2px(float spValue, float fontScale) {return (int) (spValue * fontScale + 0.5f);}
}

7、精确获取屏幕尺寸(例如:3.5、4.0、5.0寸屏幕)

1
2
3
4
5
6
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);}

8、判断是否是平板(官方用法)

1
2
3
public static boolean isTablet(Context context) {return (context.getResources().getConfiguration().screenLayout & Configuration.SCREENLAYOUT_SIZE_MASK) >= Configuration.SCREENLAYOUT_SIZE_LARGE;}

9、启动APK的默认Activity

 123456789
10
11
12
13
14
15
16
17
18
19
public static void startApkActivity(final Context ctx, String packageName) {PackageManager pm = ctx.getPackageManager();PackageInfo pi;try {pi = pm.getPackageInfo(packageName, 0);Intent intent = new Intent(Intent.ACTION_MAIN, null);intent.addCategory(Intent.CATEGORY_LAUNCHER);intent.setPackage(pi.packageName);
List<ResolveInfo> apps = pm.queryIntentActivities(intent, 0);
ResolveInfo ri = apps.iterator().next();if (ri != null) {String className = ri.activityInfo.name;intent.setComponent(new ComponentName(packageName, className));ctx.startActivity(intent);}} catch (NameNotFoundException e) {Log.e("startActivity", e);}}

10、计算字宽

1
2
3
4
5
public static float GetTextWidth(String text, float Size) {TextPaint FontPaint = new TextPaint();FontPaint.setTextSize(Size);return FontPaint.measureText(text);}

(注意如果设置了textStyle,还需要进一步设置TextPaint。)

11、半角、全角字符转换

 123456789
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
/**
     * 半角转全角
     * 
     * @param input
     *            String.
     * @return 全角字符串.
     */public static String ToSBC(String input) {char c[] = input.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == ' ') {c[i] = 'u3000'; // 采用十六进制,相当于十进制的12288} else if (c[i] < '177') { // 采用八进制,相当于十进制的127c[i] = (char) (c[i] + 65248);}}return new String(c);}/**
     * 全角转半角
     * 
     * @param input
     *            String.
     * @return 半角字符串
     */public static String ToDBC(String input) {char c[] = input.toCharArray();for (int i = 0; i < c.length; i++) {if (c[i] == 'u3000') {c[i] = ' ';} else if (c[i] > 'uFF00' && c[i] < 'uFF5F') {c[i] = (char) (c[i] - 65248);}}String returnString = new String(c);return returnString;}

12、查看应用最高可用内存

1
2
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);  
Log.d("TAG", "Max memory is " + maxMemory + "KB");

转自:http://my.eoe.cn/sisuer/archive/5917.html

这篇关于从网上找的Android实用代码,记录备用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Android使用ImageView.ScaleType实现图片的缩放与裁剪功能

《Android使用ImageView.ScaleType实现图片的缩放与裁剪功能》ImageView是最常用的控件之一,它用于展示各种类型的图片,为了能够根据需求调整图片的显示效果,Android提... 目录什么是 ImageView.ScaleType?FIT_XYFIT_STARTFIT_CENTE

利用Python调试串口的示例代码

《利用Python调试串口的示例代码》在嵌入式开发、物联网设备调试过程中,串口通信是最基础的调试手段本文将带你用Python+ttkbootstrap打造一款高颜值、多功能的串口调试助手,需要的可以了... 目录概述:为什么需要专业的串口调试工具项目架构设计1.1 技术栈选型1.2 关键类说明1.3 线程模

Python Transformers库(NLP处理库)案例代码讲解

《PythonTransformers库(NLP处理库)案例代码讲解》本文介绍transformers库的全面讲解,包含基础知识、高级用法、案例代码及学习路径,内容经过组织,适合不同阶段的学习者,对... 目录一、基础知识1. Transformers 库简介2. 安装与环境配置3. 快速上手示例二、核心模

Java的栈与队列实现代码解析

《Java的栈与队列实现代码解析》栈是常见的线性数据结构,栈的特点是以先进后出的形式,后进先出,先进后出,分为栈底和栈顶,栈应用于内存的分配,表达式求值,存储临时的数据和方法的调用等,本文给大家介绍J... 目录栈的概念(Stack)栈的实现代码队列(Queue)模拟实现队列(双链表实现)循环队列(循环数组

Android实现在线预览office文档的示例详解

《Android实现在线预览office文档的示例详解》在移动端展示在线Office文档(如Word、Excel、PPT)是一项常见需求,这篇文章为大家重点介绍了两种方案的实现方法,希望对大家有一定的... 目录一、项目概述二、相关技术知识三、实现思路3.1 方案一:WebView + Office Onl

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Java使用SLF4J记录不同级别日志的示例详解

《Java使用SLF4J记录不同级别日志的示例详解》SLF4J是一个简单的日志门面,它允许在运行时选择不同的日志实现,这篇文章主要为大家详细介绍了如何使用SLF4J记录不同级别日志,感兴趣的可以了解下... 目录一、SLF4J简介二、添加依赖三、配置Logback四、记录不同级别的日志五、总结一、SLF4J

Android Mainline基础简介

《AndroidMainline基础简介》AndroidMainline是通过模块化更新Android核心组件的框架,可能提高安全性,本文给大家介绍AndroidMainline基础简介,感兴趣的朋... 目录关键要点什么是 android Mainline?Android Mainline 的工作原理关键

使用Java将DOCX文档解析为Markdown文档的代码实现

《使用Java将DOCX文档解析为Markdown文档的代码实现》在现代文档处理中,Markdown(MD)因其简洁的语法和良好的可读性,逐渐成为开发者、技术写作者和内容创作者的首选格式,然而,许多文... 目录引言1. 工具和库介绍2. 安装依赖库3. 使用Apache POI解析DOCX文档4. 将解析