从网上找的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

相关文章

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

Android平台播放RTSP流的几种方案探究(VLC VS ExoPlayer VS SmartPlayer)

技术背景 好多开发者需要遴选Android平台RTSP直播播放器的时候,不知道如何选的好,本文针对常用的方案,做个大概的说明: 1. 使用VLC for Android VLC Media Player(VLC多媒体播放器),最初命名为VideoLAN客户端,是VideoLAN品牌产品,是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

android-opencv-jni

//------------------start opencv--------------------@Override public void onResume(){ super.onResume(); //通过OpenCV引擎服务加载并初始化OpenCV类库,所谓OpenCV引擎服务即是 //OpenCV_2.4.3.2_Manager_2.4_*.apk程序包,存

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip

从状态管理到性能优化:全面解析 Android Compose

文章目录 引言一、Android Compose基本概念1.1 什么是Android Compose?1.2 Compose的优势1.3 如何在项目中使用Compose 二、Compose中的状态管理2.1 状态管理的重要性2.2 Compose中的状态和数据流2.3 使用State和MutableState处理状态2.4 通过ViewModel进行状态管理 三、Compose中的列表和滚动