- 博客(41)
- 收藏
- 关注

原创 踩坑,Fragment使用遇到那些坑
一、 Fragment为什么要用newInstance来初始化:我们利用Android studio新建fragment的时候,利用谷歌提供的模版,可以看到,新建一个fragment时,fragment的初始化,采用的是静态工厂的形式,具体代码如下:public class BlankFragment extends Fragment { // TODO: Rename para...
2018-01-16 15:25:28
39700
2
原创 菜籽桌面4.2.0~4.5.3常见问题解答
2、星辰、星驰、凯捷等车型,接入盒子后就可以使用carplay了,宝骏车型还另外需要刷入一个USB补丁,这个USB补丁是专车专用的,因此也需要一定费用,自己考虑清楚哦~4、星驰,星辰,凯捷等车型长按 * 键重启车机,等黑屏后按下 拨号键,会进入到recovery模式,选择升级MPU版本,然后等待重启即可。2、受系统限制,咱们的车机只能安装32位软件,如果你下载的是64位的软件,那么是无法安装的,这个问题搞不定,如果安装不上,那就放弃吧。
2024-06-28 18:58:40
9997
7
原创 鸿蒙应用开发(二)环境搭建
应用/服务发布形态为APP Pack(Application Package,简称APP),它是由一个或多个HAP(Harmony Ability Package)包以及描述APP Pack属性的pack.info文件组成。一个HAP在工程目录中对应一个Module,它是由代码、资源、第三方库及应用/服务配置文件组成,HAP可以分为Entry和Feature两种类型。Entry:应用/服务的主模块,可独立安装运行。
2023-12-10 17:18:53
2768
原创 鸿蒙应用开发(一)应用适配调研
写在前面:以下内容基于我个人翻阅的官方资料以及自己的理解写的,可能存在认知和理解上的偏差,有些地方并不一定是对的,请谨慎对待,注意甄别!
2023-11-20 17:42:32
2196
原创 WorkManager使用记录
系统提供的一个新的任务形式,旨在替代Service,因为Service比较重,且前台感知能力太强(需要发送通知),因此Google推出了WorkManager,并对任务做了一些限制,以更好的适配系统任务调度,起到降低开发成本,降低设备功耗的作用。
2023-11-20 17:33:20
293
原创 Paging3的使用踩坑记录
Paging3是jetpack推出的一个分页加载库,用于方便开发者实现分页加载功能,支持显示加载状态,重试机制,支持协程与RxJava结合使用,相对于传统的分页加载方案,我们不需要关注recyclerview的滑动状态,然后根据状态去实时请求接口,所有相关的判断逻辑,Paging3已经在内部为我们做好了实现,我们只需要实现Paging3的提供的抽象方法,即可实现分页加载功能。
2023-11-20 17:30:01
736
原创 RxJava使用与原理分析
一、事件分发流程:常规创建Observable观察者:Observable.create(new ObservableOnSubscribe<String>() { @Override public void subscribe(@NonNull ObservableEmitter<String> emitter) throws Exception { emitter.onNext("");
2021-12-19 23:21:56
1880
3
原创 热更新方案总结(文章仅为总结,不涉及代码)
一、热更新方案的引入:项目发版上线后,发现一个bug,这种时候,要么忍受线上bug的存在,等待下个大版本更新时一并解决,要么发布小版本更新,但是更新小版本这种事情对于很多用户来讲,是一个体验很不好的事情:1、浪费用户流量,虽然现在流量不怎么值钱,但是下载安装的等待过程也是很影响用户体验;2、对于更新狂人来讲,这些用户热爱更新,但是更新完毕后仅仅是修复一个小bug,对于没碰到这个bug的用户来讲...
2020-04-25 21:47:39
2343
原创 目前我所接触的兼容性最好的屏幕适配方案
头条推出的修改DisplayMetrics的缩放级别的方案,侵入性极低,但是这要求所有的UI图按照同一套设计尺寸来进行布局,在这种情况下,如果你的项目里面有第三方控件,而恰好这些第三方控件的设计尺寸跟你的UI设计尺寸不一致,那头条的这个方案就不适用了,而且这种情况挺常见的,我这里提供的这种方案,侵入性就会比较高了,但是可以有效的避免上述问题,而且经过线上连续三年的版本验证,一切正常,没出现过问题,下面上代码。2、创建SizeUtil,传入参数,参数解释看代码上的注释。
2019-07-26 13:48:57
258
原创 封装的图片选择工具,通过调用系统API实现,代码量少,侵入性低
package com.konstant.tool.lite.utilimport android.app.Activityimport android.content.Contextimport android.content.Intentimport android.graphics.Bitmapimport android.graphics.Colorimport andro...
2019-05-22 13:47:08
215
原创 安卓Q暗黑模式适配
安卓Q版本新增了暗黑模式,用户只需在系统中开启暗黑模式(MIUI中叫做深色模式),即可开启全局暗黑模式,这个也需要第三方应用来进行适配暗黑模式:本质上就是两套主题的切换,从明亮的主题切换暗色主题的一个过程,网上有很多成熟的第三方主题切换框架可以使用,不过我们这里讲的是利用安卓系统自带的API进行切换先上两张效果图吧:明亮模式暗黑模式下面是适配步骤:1、颜色定义:首先在re...
2019-05-20 10:46:44
9613
5
原创 安卓6.0以上动态权限申请
没啥技术含量,代码可以直接粘走使用从安卓6.0(api23)开始,权限声明不仅需要在manifest中添加权限声明,还需要在JAVA代码中再次申请一遍,但是权限申请的结果是在onRequestPermissionsResult中回调的,当拿到回调结果后,还需要再判断用户是否勾选了“不再提示”选项,如果再次申请,会出现很多重复代码,因此,把权限申请放在baseActivity里面,我们在使用
2018-01-22 19:22:48
387
原创 动态权限申请封装在BaseActivity中
public class BaseActivity extends AppCompatActivity { private int mRequestCode = 12; private String mReason; private String mPermission; // 申请权限 protected void requestPermission
2018-01-02 17:18:49
1098
原创 解决ListView的The content of the adapter has changed but ListView did not receive a notification崩溃问题
最近在写一个聚合工具箱的时候,添加了滑动返回功能,使用ListView时(不要问我为啥不用recycleview,小工具嘛,主要是逻辑,页面都是次要的),遇到如下崩溃问题 java.lang.IllegalStateException: The content of the adapter has changed but ListView did not receive a notifi...
2018-01-02 14:43:25
3436
原创 安卓3DES加解密(kotlin)
import android.util.Base64import java.security.SecureRandomimport javax.crypto.Cipherimport javax.crypto.SecretKeyFactoryimport javax.crypto.spec.DESedeKeySpec/** * 描述:3DES加密 * 创建人:菜籽 * 创建时间:
2017-12-19 15:46:10
756
原创 Android kotlin fragment中使用布局控件
注意控件不能从 onCreateView中获取,而是要从 onViewCreated中获取和调用,具体代码如下:package cn.showmac.tool.fragmentimport android.os.Bundleimport android.support.v4.app.Fragmentimport android.util.Logimport android.view...
2017-12-04 11:24:25
1956
原创 H5网页调用原生支付宝支付的完整demo
检测到支付宝时会调起原生APP,检测不到支付宝时会调起网页版支付宝package cn.showmac.simpledemo;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support....
2017-11-30 11:05:32
25810
3
原创 ADIL验证授权
在项目中,我们编写了一个服务,通过AIDL对外提供接口,但是不是没一个调用者都可以调用我们的接口的,这时候,就需要对调用者的身份做授权验证了,验证方法有两种,第一种是权限验证(permission),第二种是包名验证(packageName)一、权限验证:在AIDL的响应方法中,添加以下代码,如果调用着没有声明这个权限,则直接返回nullprivate boolean verifyP...
2017-11-21 16:25:44
505
原创 通过intent跳转到系统拨号页面
Intent intent = new Intent();intent.setData(Uri.parse("tel:" + "12342342423"));intent.setAction(Intent.ACTION_DIAL);startActivity(intent);
2017-09-27 16:40:56
790
原创 解决自定义Toast(吐司)设置宽高无效的问题
网上搜索了各种教程,什么动态设置啊,什么获取屏幕宽高啊之类的,纯属扯淡,不仅繁琐,而且大多没有效果,自己抠了半天,发现一个最简单的解决办法,下面上代码:先上JAVA代码:/** * 描述:自定义吐司 * 创建人:菜籽 * 创建时间:2017/9/21 上午11:13 * 备注: */public class KonstantToast { public stati...
2017-09-21 12:06:02
2585
1
原创 解决APP进程被杀掉之后,导致fragment失效或者错乱的办法
activity被杀掉之后,它会通过如下方法把数据缓存下来protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);}当再次进入activity时,系统会从savedInstanceState中回复数据,但是我们从activity启动时,会重新初始化Fragme...
2017-09-18 23:03:09
1796
原创 ScrollView嵌套GridView或者ListView只显示一行的解决办法
一、ScrollView嵌套GridView:重写GridView的onMeasure方法public class MyGridView extends GridView { public MyGridView(Context context, AttributeSet attrs) { super(context, attrs); } publi
2017-09-17 21:41:35
303
原创 解决ScrollView嵌套viewpager的冲突问题
解决办法:第一步:给viewpager设置制定高度,比如120dp第二步:给ScrollView的xml布局中添加 android:fillViewport="true" 属性(以上两步已经能解决viewpager不显示的问题了,如果想继续解决滑动冲突的问题,继续往下看)第三步:重写ScrollView的触摸拦截事件,完整代码如下package cn.showmac.s
2017-09-15 15:01:11
381
原创 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用
Error:(341, 64) 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;对于 varargs 调用, 应使用 Class对于非 varargs 调用, 应使用 Class[], 这样也可以抑制此警告Method method = cls.getMethod( " hashCode " , null ); //
2017-08-15 10:18:19
13401
1
原创 获取设备信息的工具类
/** * 描述:获取设备的硬件信息 * 创建人:菜籽 * 创建时间:2017/1/5 0005 19:33 * 备注: */public class DeviceInformation { private static Properties properties; /** * 获取当前设备的IMEI信息 * * @param co
2017-07-26 18:54:04
528
转载 将图片裁剪成圆形的图片处理工具,可以直接粘走用
/** * 描述:图片处理工具 * 创建人:菜籽 * 创建时间:2017/6/9 上午11:56 * 备注:来自网络,来源不记得了,如有侵权,请联系我 */public class BitmapUtil { /** * 裁剪成圆形头像 * @param bitmap * @return */ public synchronize
2017-07-26 16:58:38
1394
原创 自己写的一个打log的工具类,没啥技术含量,可以直接粘走用
/** * 描述:打印log的工具类 * 创建人:菜籽 * 创建时间:2017/7/18 下午5:56 * 备注: */public class LogUtils { private static boolean flag = true; public static void d(String tag, String string) { if (f
2017-07-26 16:56:06
360
原创 欢迎使用优快云-markdown编辑器
/** * 描述:打印log的工具类 * 创建人:菜籽 * 创建时间:2017/7/18 下午5:56 * 备注: */public class LogUtils {private static boolean flag = true;public static void d(String tag, String string) { if (flag) {
2017-07-18 18:07:47
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人