- 博客(33)
- 收藏
- 关注
原创 Android Drawable对应关系和各个子类使用详解
下边是drawable中各个标签对应的实现子类,想要在java代码中实现动态编写样式可以参考xml标签Drawable实现子类bitmapBitmapDrawablenine-patchNinePatchDrawableshapeShapeDrawablelayer-listLayerDrawableselectorStateListDrawablelevel-listLevelListDrawabletransitionTransit
2022-04-21 17:30:43
2116
原创 Android代码中动态设置ProgressBar背景
总共介绍两种方式,一种是在xml文件中写死的,一种是java代码动态设置的,第二种的优势就是可以动态设置,比如根据用户设置或者后台回传的样式来动态进行设置。第一种 xml 设置直接 drawable 文件夹下新建一个 xml 文件,配置代码如下:<?xml version="1.0" encoding="UTF-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <
2021-09-03 15:27:15
721
原创 Android Toast 自定义显示时长
Android Toast 只支持两种时间 LENGTH_SHORT 2 秒,LENGTH_LONG 3.5 秒,但是有场景需要自定义显示时长就会有问题,所以需要自定义实现,下边是自定义的类,通过定时器来实现长时间的显示。/** * 功能描述:自定义toast显示时长 */public class CustomToast { private Toast mToast; private TimeCount timeCount; private String message;
2021-09-02 11:36:36
4056
3
原创 Android获取屏幕宽高的三种方式
第一种int screenWidth = getWindowManager().getDefaultDisplay().getWidth();int screenHeight = getWindowManager().getDefaultDisplay().getHeight();这个方法会提示过时了,推荐后边两种。第二种DisplayMetrics dm = new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetr
2021-09-01 13:20:41
3569
原创 Android获取底部导航高度,修复部分机型检测到但不显示问题
Android获取底部导航部分机型(华为nova,小米8等)出现了没有底部导航栏,但是却检测到了,手动给视图加高度的UI就出现了问题,下方多了一部分空白,于是查找新的方法。检测导航栏先看原来使用的方法,Android想要获取底部虚拟NavigationBar的高度,需要先检测该手机有无底部导航,示例代码如下: /** * 检查是否存在虚拟按键栏 */ @TargetApi(Build.VERSION_CODES.ICE_CREAM_SANDWICH) priv
2021-09-01 11:12:20
1858
原创 Android添加联系人到通讯录
本周项目中遇到了需要添加联系人或者添加到已有联系人的需求,联系人中需要保存的字段有很多,之前不太熟悉,在这里总结一下。联系人名字名字不知道为什么,值设置了之后传过去没有,于是自己通过Intent最后又单独传了一次// 联系人名字ContentValues row1 = new ContentValues();String name = lastName + middleName + firstName;row1.put(ContactsContract.Data.MIMETYPE, Contact
2021-04-22 20:42:20
2119
原创 Android utdid冲突:Duplicate class com.ta.utdid2
项目集成支付宝支付后运行报了类冲突,报错如下:Duplicate class com.ta.utdid2.a.a.a found in modules jetified-alipaysdk-15.8.02.210308182128-runtime (alipaysdk-15.8.02.210308182128.aar) and jetified-utdid-1.5.2.1 (com.umeng.umsdk:utdid:1.5.2.1)Duplicate class com.ta.utdid2.a.a.b
2021-04-19 14:23:29
2153
原创 Android系统分享功能
Android系统是自带分享功能的,不过也有一定的局限性,可以分享图片,文字,视频,音频等,也可以分享多图,但是不支持直接分享一个卡片(包括图文,链接),所以一般都是将需要分享的内容添加到图片中,或者通过整串文字的方式来分享。下边是几种分享方式的具体代码:action设为send或者send multiple,然后设置分享的类型和要分享内容分享文字Intent intent = new Intent();intent.setAction(Intent.ACTION_SEND);intent.pu
2021-04-09 19:52:31
4286
原创 Android清除应用缓存
第一种使用ActivityManager中的clearApplicationUserData方法,代码如下:ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);am.clearApplicationUserData();这种方式的问题就是不知清除cache,连带应用的data也删除了。如下图所示:第二种使用PackageManager中的deleteApplicationCacheF
2021-03-11 17:41:26
1760
原创 Android设置WIFI静态IP
想要在代码中实现设置WIFI静态IP需要有系统权限,要在manifest文件添加android:sharedUserId=“android.uid.system”,还要有系统签名。设置WIFI静态IP和之前以太网的类似,都是要构造StaticIpConfiguration对象,以及IpConfiguration.IpAssignment.STATIC就代表设置为静态IP,也可以设置DHCP(自动获取),不过WifiConfiguration可以直接通过WifiManager获取到,比设置以太网的要简单一些
2020-12-29 16:25:27
3065
33
原创 Android代码中实现关机
想要在代码中实现关机需要apk有系统权限,要在manifest文件添加android:sharedUserId=“android.uid.system”,还要有系统签名。###第一种方式直接使用adb shell 命令,调用reboot命令来关机try { Runtime.getRuntime().exec("reboot -p"); //关机} catch (IOException e) { e.printStackTrace();}###第二种方式电泳PowerManag
2020-12-21 18:14:41
4915
1
原创 Android获取移动网络信号强度
判断有没有SIM卡获取移动网络的信号,一定要判断是否插了SIM卡,没插卡肯定是没法获取的 /** * 判断是否包含SIM卡 * * @return 状态 */ public static boolean hasSimCard(Context context) { TelephonyManager telMgr = (TelephonyManager) context.getSystemService(C
2020-11-25 18:14:31
6030
27
原创 EthernetManager Android设置以太网静态IP
想要设置以太网为静态IP通过搜索是需用到EthernetManager,但是EthernetManager是谷歌隐藏的API,app是无法调用到的,所以只能通过反射来进行设置也可以通过下载系统的class.jar包,放到自己的项目中,就可以不用反射,直接调用下边是引入jar包直接调用的代码,通过EthernetManager 的setConfiguration方法来设置,但是需要构造IpConfiguration 和StaticIpConfiguration对象,IpConfiguration.IpAs
2020-11-13 17:19:55
2336
2
原创 Android系统设置屏幕不旋转
想要修改系统设置,需要apk有系统权限,有系统权限manifest文件要添加android:sharedUserId=“android.uid.system”,还要有系统签名,应用添加如下权限: <uses-permission android:name="android.permission.WRITE_SETTINGS" />设置屏幕是否自动旋转Settings.System.putInt(mContext.getContentResolver(), Settings.Syst
2020-11-02 18:04:28
1338
原创 Android应用如何重启自己
final Intent intent = getPackageManager().getLaunchIntentForPackage(getPackageName()); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent); //杀掉以前进程 android.os.Process.killProcess(android.os.Process.myPid());######标志位FLAG作用:..
2020-09-25 09:37:48
1411
原创 Android利用反射机制调用截屏方法和获取屏幕宽高的方法
想要在应用中进行截屏,可以直接调用View的getDrawingCache方法,但是这个方法截图的话是没有状态栏的,想要整屏截图就要自己来实现了。还有一个方法可以调用系统隐藏的screenshot方法,来进行截屏,这种方法截图是整屏的。通过调用SurfaceControl.screenshot() / Surface.screenshot() 截屏,在 API Level 大于 17 使用 SurfaceControl ,小于等于 17 使用 Surface,但是screenshot方法是隐藏的,因此就
2020-09-14 14:23:21
1955
原创 Android中切换到主线程执行的方法
方法一: view.post(Runnable runnable)使用view对象,调用post方法即可在主线程中执行里边的代码,postDelayed则是延时执行,也可以达到相同的效果。例如:textView.post(new Runnable() { @Override public void run() { textView.setText("更新textView"); } });方法二:runOnUiThread
2020-09-10 17:33:59
4776
原创 十大经典排序算法Java版
参考链接定义稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面。不稳定:如果a原本在b的前面,而a=b,排序之后 a 可能会出现在 b 的后面。时间复杂度:对排序数据的总的操作次数。反映当n变化时,操作次数呈现什么规律。空间复杂度:是指算法在计算机内执行时所需存储空间的度量,它也是数据规模n的函数。1、冒泡排序(Bubble Sort)冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没
2020-08-07 09:03:04
164
原创 RxJava2.0 Interval和IntervalRange操作符
Interval操作符先看一下RxJava的源码:public static Observable<Long> interval(long initialDelay, long period, TimeUnit unit) { return interval(initialDelay, period, unit, Schedulers.computation());}public static Observable<Long> interval(long in
2020-08-03 14:36:05
1010
原创 Android Canvas drawText如何支持换行
想要直接在Canvas的drawText方法中的要绘制的文本中直接使用 \n 来换行是不支持的,但是如果有这样得需求也可以自己来实现。第一种方法直接使用TextPaint就可以支持,这种方法比较方便,所有符号都会直接支持,下边附上代码:TextPaint textPaint = new TextPaint();textPaint.setARGB(0xFF, 0, 0, 0);textPaint.setTextSize(20.0F);textPaint.setAntiAlias(true);Sta
2020-07-28 16:34:06
2350
2
原创 Android Bitmap 保存图片透明背景变黑色背景
先附上一段保存图片到本地的的代码,可以使用这个方法或者直接Debug运行程序,打断点点击Bitmap的view按钮来查看Bitmap的内容public static void saveBitmap(Bitmap bitmap,String path) { try { File filePic = new File(path); if (!filePic.exists()) { filePic.getParent
2020-07-22 11:06:39
3875
15
原创 Android自定义view常用类和方法说明
Canvas常用方法绘制方法drawLine:画一条线,drawPath:绘制传入的路径drawColor:是直接将View显示区域用某个颜色填充满drawRect drawRoundRect drawBitmap drawText drawCircle drawPoint等等这些方法都和drawLine一样根据方法名就可以看出绘制的内容,按照需要传入参数即可其他方法translate:平移scale:缩放rotate:旋转save:将当前的状态保存restore:取出原来所保存的
2020-06-19 11:21:30
409
原创 AS报错以及Gradle插件和Gradle版本对应关系
If you are behind an HTTP proxy, please configure the proxy settings either in IDE or Gradle.可能导致这个问题的原因可能是gradle插件和gradle版本不对应,或者项目IDE版本和原版本不一致,下边是个版本的对应关系插件版本所需的 Gradle 版本1.0.0 - 1.1.32.2.1 - 2.31.2.0 - 1.3.12.2.1 - 2.91.5.02.2.1 - 2
2020-06-04 17:42:11
2898
2
原创 Android Studio常用快捷键个人总结
以下是近期总结的,平时也比较常用的一些快捷键,有助于提高开发效率,完善代码,希望能够帮助到大家。Ctrl + ShiftCtrl + Shift + W : 和Ctrl + W 配合使用,逐级向下选中Ctrl + Shift + R : 全局替换Ctrl + Shift + Y : translate,翻译功能,通过下载插件启用,在Plugins中搜索translationCtrl + Shift + U : 将选中的代码字母全部变为小写,再次使用全部变为大写Ctrl + Shift + A
2020-05-22 16:20:08
479
原创 金融开发常用术语解释
EMV:EMV是国际金融业界对于智能支付卡与可使用芯片卡的POS终端机及自动柜员机(ATM)等所制定的标准。PBOC:中国人民银行(The People’s Bank Of China,英文简称PBOC),简称央行,是中华人民共和国的中央银行PSAM:PSAM是中国人民银行发布的识别卡,包括普通PSAM卡和高速PSAM卡。APDU:ApplicationProtocolDataUnit–应用协议数据单元。协议数据单元PDU(ProtocolDataUnit)是指对等层次之间传递的数据单位。协议数据单元
2020-05-15 13:49:55
540
原创 Android绘制虚线变为实线,踩坑之旅
#问题先上原来代码中画虚线的代码PathEffect effects = new DashPathEffect(new float[]{5, 5}, 1);mPaint.setPathEffect(effects);canvas.drawLine(a, b,c, b, mPaint);绘制出来之后一直都是实线,怎么修改都是这样,然后在网上搜也一直没有找到合适的答案,后来发现了一篇一样问...
2019-12-30 11:23:18
875
原创 Gson转换导致int转为double问题解决
当我们用Object或者Map中的泛型使用了Object,我们将json转换之后,发现数据中的所以数值都变成了double类型,0变为了0.0,导致后续程序可能出现一些问题。查看Gson的源码, 会发现Object最后默认的TypeAdapter使用的是com.google.gson.internal.bind包下的ObjectTypeAdapter,里边的处理如下:/** * Adapts...
2019-12-30 11:22:36
2573
原创 Android组件化+MVP+Dragger2+RxJava+EventBus
Android开发规范参考文章学习Android开发的规范,主要学习到的点:1、包名划分采用PBF进行分包的好处,因为同一功能代码在同一包中,所以容易删除功能,并且降低了package耦合;拥有私有作用域,一个功能不能访问另一功能的任何东西;包大小体现出功能的问题,包太大说明此功能需要进行重构。2、命名规范主要需要记住的是静态字段命名以s开头,非静态字段以m开头,其他的规范都比较熟悉。...
2019-11-12 16:42:14
427
原创 百度地图Android API实现点聚合功能以及设置最小聚合数和最大显示数
首先到百度地图开发者平台,下载官方Demo,网址链接:http://lbsyun.baidu.com/index.php?title=androidsdk使用Android Studio开发打开BaiduMapsApiASDemo,Eclipse打开BaiduMapsApiDemo。打开实现点聚合的Demo类查看实现过程。将需要用到的工具类复制到自己的工程中,按照Demo中...
2018-09-17 20:03:15
5119
原创 ADB命令安装APK常见错误总结
通过adb命令安装应用过程:常见问题以及原因:Failure [INSTALL_FAILED_ALREADY_EXISTS]:应用已经存在,需要卸载设备中现有的。:没有找到设备,查看是否开启调试,或者数据线有问题Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]:版本不能共存,可能使用了相同版...
2018-03-23 17:08:15
7905
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人