- 博客(138)
- 资源 (6)
- 收藏
- 关注
原创 bugly热更新9.0失败率及loader classes are found in old secondary dex问题
1.确保使用最新版本bugly、tinker参考https://bugly.qq.com/v2/downloads 去配置最新版本号,注意对应关系如下:升级 SDK 包 1.4.2 2019-09-24修复app下载后无法跳转进app安装界面集成crash sdk 3.1.0对应tinker lib 1.9.14,tinker-support版本1.2.0...
2019-10-22 11:17:32
885
原创 WindowManager addView 添加报错 异常关于type类型设置
高版本的系统中设置悬浮窗时候layoutparams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR会报错:android.view.WindowManager$BadTokenException: Unable to add window android.view.ViewRootImpl$W@d4c6880 -- permissi...
2019-09-10 16:28:46
1629
原创 MMKV替代sp,封装的工具类(kotlin)
使用MMKV替代SharedPreferences,好处:MMKV是微信应用程序中使用的一种高效、小巧、易用的移动键值存储框架。目前在iOS、macOS、Android和Windows上都可以使用。一、在app的build.gradle中引入 implementation 'com.tencent:mmkv:1.0.19'二、在application里初始化 M...
2019-05-17 16:31:36
4875
原创 图片加载引擎框架封装
一、新建接口编写加载方式public interface IImageLoader { void load(@NonNull ImageView imageView, @NonNull Object imageUrl); void load(@NonNull ImageView imageView, @NonNull Object imageUrl,int width, int ...
2019-05-16 18:05:57
385
原创 Android 全局弹出对话框
方案一 :使用系统弹窗权限1.1 .先加权限<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />1.2 创建alertDialog时候设置类型为 alertDialog.getWindow().setType(WindowManager.LayoutParams.TYP...
2019-05-16 10:44:30
2943
原创 androidstudio修改包名
AndroidMainfest文件中包名进入 Androidmanifest.xml 文件,找到 package 名称,选中需要修改的部分。比如原包名为 package=“com.github.tianmu.diskcacheutil”, 如果需要修改中间的 tianmu ,那么我们就选中 tianmu文字 ,依次进行 右键 - > Refactor -> Rename然后选...
2019-05-14 10:58:33
233
原创 Android软键盘(输入法)隐藏问题
有时候,需要强制隐藏Android输入法键盘,如当前键盘正在显示,这个时候点击了侧滑面板,就要强制隐藏输入法键盘。网上常见的方法有:1、 InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);imm.toggleSoftInput(...
2019-05-10 11:21:46
1030
原创 androidStudio去除无用、多余、未引用、未关联的资源的方式
我们知道,当版本经过多次迭代,项目中多多少少会存在一些无用的资源,不仅会造成我们打包的APK体积过大,还会造成项目资源的冗余,下面说说如何找到清除这些无用资源。1. 打包时去除无用的资源buildTypes { debug { versionNameSuffix "_debug" //versionName的后缀 minify...
2019-05-07 16:34:08
7946
2
原创 lint检查会报警告信息:(onTouchListener warning: onTouch should call View#performClick when a click is detecte
lint检查会报警告信息:(onTouchListener warning: onTouch should call View#performClick when a click is detected)–>onTouch在不执行touch时候应该断掉view的touch事件错误使用:findViewById(R.id.fl_container).setOnTouchListener(n...
2019-05-07 15:33:01
1166
转载 Activity中添加多个Fragment切换,透明状态栏后顶部进入状态栏问题
stackoverflow网站解决方法转载自:安久哲(翻译产生的原因,当第一个Fragment添加到Activity中的时候,Activity寻找出有fitsSystemWindows的子布局为其预留出状态栏的空间,其实就是设置一个padding,而其他Fragment添加到Activity中的时候,因为状态栏空间的适配已经被消费过一次了,Activity并不会再次去添加这个padding。...
2019-04-19 11:01:39
796
原创 记录安卓手机 刘海屏判断及获取信息
object NotchSupportUtil { //----------------------huawei fun hasNotchAtHuawei(context: Context): Boolean { var ret = false try { val classLoader = context.getClass...
2019-02-20 15:42:41
2628
原创 首次进入app,退到桌面在进入会重启启动页问题(首次装app,点击推送会重启app)
在launch活动页面的onCreate()方法的setContentView()方法前面添加if (!this.isTaskRoot()) { Intent mainIntent = getIntent(); String action = mainIntent.getAction(); if (mainIntent...
2019-01-29 10:20:05
1216
原创 activity执行onDestroy后最大化回收内存
public class ActivityReleaseMemoryUtil {private static final ActivityReleaseMemoryUtil ourInstance = new ActivityReleaseMemoryUtil();public static ActivityReleaseMemoryUtil getInstance() { retur...
2019-01-23 11:38:52
802
原创 去除recyclerview的notifydatasetchanged动画
public class RecyclerViewAnimUtil { private static final RecyclerViewAnimUtil ourInstance = new RecyclerViewAnimUtil(); public static RecyclerViewAnimUtil getInstance() { return ourIn...
2019-01-23 11:35:03
3956
原创 优化大量图片加载recyclerview列表的滑动效果
通用的几种方式viewHolder复用机制图片异步加载、缓存、压缩(使用glide等解决,最好后台反2套:缩略图和原图)根据滑动状态处理加载情况这里就主要处理:1.如果在滑动的过程中且没没被加载过,那么就不加载2.(加载)2.1在滑动的过程中且加载过2.2不在滑动中主要是监听列表滚动,把状态传入adapter中,然后设置图片bean的是否加载过状态,然后根据图片状态和滑动状态确定是否...
2019-01-23 11:32:02
5280
原创 安卓改变searchview字体的颜色等
这里要针对2种searchview进行操作,通常的 - SearchView SearchView mSearchViewInclude;int id =mSearchViewInclude.getContext().getResources().getIdentifier("android:id/search_src_text", null, null);TextView text...
2018-08-14 14:49:23
2308
原创 GreenDao遇到PRIMARY KEY must be unique (code 19)
错误如图: 这里可能有以下几个原因:1.如果主键标记时没有添加autoincrement , 那么就是传的id重复了, 传的时候获取最新id然后++id即可, 这里不讨论@Id(autoincrement = true)2.我明明标了autoincrement , 按理不用传id的, 也确实没传, 还爆not unique的话, 就是踩坑了GreenDao的主键必...
2018-08-13 10:34:47
1127
原创 新建项目运行遇到java.lang.NoSuchMethodError: No static method getFont
如图所示 这是由 com.android.support:appcompat版本不一致遇到的BUG 解决方法是: build.gradle中的 compileSdkVersion 26 buildToolsVersion "27.0.0"引入的类库 compile 'com.android.support:appcompat-v7:27.0.0'的版本要和b...
2018-08-10 14:59:36
1868
转载 transformDexArchiveWithExternalLibsDexMergerForDebug 问题的完美定位[转载]
地址:transformDexArchiveWithExternalLibsDexMergerForDebug – double Shift:全局查找,这个查看和Alt+H稍稍有些不同,这个是全局文件查找,到文件名称层面。exclude 剔除掉多余的包场景一要移除的jar包不在aar包中的classes.jar中直接把aar包里的Jar打包的时候给去掉,就像下面这这样。...
2018-08-10 13:07:52
646
原创 自定义notification点击跳到web或者指定页面,回退到main页面
重要的就是添加回退栈TaskStackBuilder stackBuilder = TaskStackBuilder.create(this); // 添加返回栈 stackBuilder.addParentStack(WebCommonActivity.class); // 添加Intent到栈顶 stackBuilder.addNextI...
2018-07-26 14:49:05
1090
原创 安卓开发web中打开原生app
**一:采用android_scheme方式可以实现webview、大部分浏览器从网页跳到app中,(百度浏览器拦截了此功能)、(微信无法跳转,会找不到网页)** 1.需要在你要打开的页面中配置过滤器(注意:如果在你app主launch页面配置,需要单独设置一个过滤器哦,不然打开app后桌面图标就消失了) 2.网页中需要在顶部悬浮框显示打开app,链接:&lt;a href="...
2018-07-10 11:38:05
2429
原创 安卓开发监听键盘的弹出动作
使用起来很简单只需判断键盘高度是否为0 就可以知道键盘是否弹出了。getDecorView() 获取的是整个应用的view 包括标题栏,但是不包括状态栏,r.top就是状态栏的高度。// TODO: 2018/7/2 mEtSign.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.O...
2018-07-02 14:44:18
523
1
转载 Lambda表达式的使用实例(转载)
1、首先介绍下什么是Lambda?我们知道,对于一个Java变量,我们可以赋给其一个“值”。 如果你想把“一块代码”赋给一个Java变量,应该怎么做呢? 比如,我想把右边那块代码,赋给一个叫做aBlockOfCode的Java变量: 在Java 8之前,这个是做不到的。但是Java 8问世之后,利用Lambda特性,就可以做到了。 为了使这个赋值操作更加elegant, 我们可以...
2018-06-13 14:55:20
1702
原创 安卓WebView上传 拍照选择的图片问题
1首先 配置动态权限:理解onShowFileChooser或openFileChooser //变量 private ValueCallback<Uri> uploadMessage; private ValueCallback<Uri[]> uploadMessageAboveL;webView.setWebChromeClient(ne...
2018-05-28 14:45:21
2031
原创 bugly热更新、多渠道集成及加固问题
Bugly Android热更新使用指南–》大部分步骤按照文档即可:官方文档========================================================================= 第一步:添加插件依赖 工程根目录下“build.gradle”文件中添加: ===========================================...
2018-05-16 23:21:35
1644
原创 安卓全面屏适配方法
随着越来越多的全面屏手机的发布,尤其是千元机也上了所谓的全面屏,即18:9广义的全面屏,还有一些异形屏幕-刘海屏幕,我们也要加快适配,不然就出现拉伸变形的启动图怪像。 适配方法: 1.在应用配置文件AndroidManifest.xml中显式声明支持的最大屏幕高宽比(maximum aspect ratio)。其中 ratio_float 为高宽比: 传统屏幕:ratio_float = 1...
2018-04-08 14:54:19
9268
原创 安卓软键盘弹起时的各种问题
首先是要在清单文件里对目前的activity设置输入法属性activity android:name=".ui.activity.my.AdviceActivity" android:screenOrientation="portrait" android:theme="@style/otherPageStyle"
2018-01-18 15:17:21
1539
原创 ToolBar修改返回按钮图标,CollapsingToolbarLayout修改文字居中
在根节点加上这几句就可以了:xmlns:app="http://schemas.android.com/apk/res-auto"app:navigationIcon="@drawable/navigationIcon"android:navigationIcon="@drawable/navigationIcon"Menu菜单文字的颜色修改:使用ToolBar时,需要右上角的菜单按钮,菜单的文
2017-12-28 18:45:08
4345
原创 Material Design之CollapsingToolbarLayout使用
CollapsingToolbarLayout作用是提供了一个可以折叠的Toolbar,它继承至FrameLayout,给它设置layout_scrollFlags,它可以控制包含在CollapsingToolbarLayout中的控件(如:ImageView、Toolbar)在响应layout_behavior事件时作出相应的scrollFlags滚动事件(移除屏幕或固定在屏幕顶端)。 使用Co
2017-12-28 18:43:01
234
原创 Android WebView 与OkhttpClient登录状态保持一致,建立SESSION会话
这里我用的是okhttputils工具https://github.com/hongyangAndroid/okhttputils 如果你用okhttpclient,获取session如下,Cookie cookie = ((AbstractHttpClient) client).getCookieStore().getCookies().get(0);
2017-11-15 13:13:30
2219
原创 Android WebView重定向问题的解决方案
当WebView在加载网页时,有时会有重定向问题,返回键回退怎么也回退不掉,怎么办?WebView有一个getHitTestResult():返回的是一个HitTestResult,一般会根据打开的链接的类型,返回一个extra的信息,如果打开链接不是一个url,或者打开的链接是JavaScript的url,他的类型是UNKNOWN_TYPE,这个url就会通过requestFocusNodeHre
2017-11-14 09:27:26
974
原创 The specified child already has a parent错误(子只能有一个父)
错误信息:java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
2017-11-09 15:15:04
6738
原创 Android全屏切换到非全屏界面的视觉问题
常见场景:客户端从闪屏页(全屏模式)进入app主页(有状态栏)时查看大图页面(全屏沉浸)返回上个页面(有状态栏)时问题:在页面切换过程中,会出现先显示页面内容,然后由于状态栏的出现,整个界面下移一个状态栏高度的问题。造成整个页面闪一下,下沉一下的感觉,非常不爽的体验。解决方法:错误方法: getWindow().setFlags(WindowManager.LayoutParams.F
2017-10-28 00:35:18
5028
转载 Android ConstraintLayout布局详解
解析ConstraintLayout的性能优势 https://mp.weixin.qq.com/s/gGR2itbY7hh9fo61SxaMQQAndroid新特性介绍,ConstraintLayout完全解析 http://blog.youkuaiyun.com/guolin_blog/article/details/53122387布局详解: http://blog.youkuaiyun.com/qq_34
2017-10-24 14:56:37
334
原创 Android textview 代码中设置粗体效果
在xml文件中使用Android:textStyle=”bold” 可以将英文设置成粗体,但是不能将中文设置成粗体。 将中文设置成粗体的方法是: 1.TextView tv = (TextView)findViewById(R.id.TextView01); TextPaint tp = tv.getPaint();tp.setFakeBoldText(true); 2.要取消加粗效
2017-09-25 21:04:09
5744
原创 Android常用内存泄漏学习
java gc概念: 在大部分虚拟机(包括Android的ART)中,Java都采用了“可达性分析”算法来进行内存回收,原理是:会有几个引用作为root节点,对于任意对象来说,如果从root层层遍历,如果找不到对于他的引用链,那么这个对象就被标记为无用,就会在gc时被销毁。 何为泄漏 内存泄漏,即部分对象虽然已经不再使用,但是因为有root持有引用,所以并没有被销毁,所占用的内存一直没有被释放
2017-09-22 10:27:43
283
转载 java synchronized关键字的用法以及锁的等级:方法锁、对象锁、类锁
转载自:http://blog.youkuaiyun.com/le_le_name/article/details/52348314java的内置锁:每个java对象都可以用做一个实现同步的锁,这些锁成为内置锁。线程进入同步代码块或方法的时候会自动获得该锁,在退出同步代码块或方法时会释放该锁。获得内置锁的唯一途径就是进入这个锁的保护的同步代码块或方法。 java内置锁是一个互斥锁,
2017-09-21 18:07:19
2967
原创 Android 本地服务通知
服务代码:public class NotificationService extends Service { // 获取消息线程 private MessageThread messageThread = null; // 点击查看 private Intent messageIntent = null; private PendingIntent messa
2017-09-20 12:24:16
2419
转载 Android Notification自定义通知样式你要知道的事
转载自:http://www.mamicode.com/info-detail-1522854.html什么是通知(Notification)通知是一个可以在应用程序正常的用户界面之外显示给用户的消息。通知发出时,它首先出现在状态栏的通知区域中,用户打开通知抽屉可查看通知详情。通知区域和通知抽屉都是用户可以随时查看的系统控制区域。作为安卓用户界面的重要组成部分,通知
2017-09-20 12:18:42
593
原创 Spinner的使用
1.最简单的Spinner在布局文件中添加Spinner控件<LinearLayout android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Spinner
2017-09-15 11:11:11
564
谷歌RecyclingImageView加载图片示例
2019-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人