![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
android知识
奈何若何
这个作者很懒,什么都没留下…
展开
-
Dialog中Context内存溢出最终解决方案
gralde添加api 'com.lai.weavey:loadinglayout:1.3.1'xml布局最外层添加<com.weavey.loading.lib.LoadingLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/loadin.原创 2020-10-30 18:47:50 · 588 阅读 · 0 评论 -
ARTHook非侵入式之图片检查
Bitmap内存模型API10之前Bitmap自身在Dalvik Heap中,像素存在Native API10之后像素也存放在Dalvik Heap中 API26之后像素存在Native待续。。。。原创 2020-10-15 14:45:15 · 678 阅读 · 0 评论 -
高效加载Bitmap
一、概述 在Android开发中,我们经常与Bitmap打交道,而对Bitmap的不恰当的操作经常会导致OOM(Out of Memory)。这篇文章我们会介绍如何高效地在Android开发中使用Bitmap,在保证图片显示质量的前提下尽可能占用更小的内存。1. 什么是Bitmap Android中的Bitmap对象是对位图的抽象,它可以从文件系统、资源文件夹、网络等各种不同的来源获取。位图可以看做是像素点的集合,本质上就是通过一系列二进制位来描述一张图片,具有不同色彩格式的位图使用...转载 2020-09-27 16:49:56 · 221 阅读 · 0 评论 -
Android View ScrollView等转为BitMap包含看不见的情况的解决办法
package com.cfs.app.utils;import android.content.Context;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.graphics.drawable.Color.原创 2020-09-25 14:27:18 · 780 阅读 · 0 评论 -
Android开发注意事项
本文作为个人笔记,吸取采纳各位大神的精华,作为个人开发注意事项,仅在CSDN保存。1.Context的用法举例:单利模式(非线程安全)public class Singleton { private static Singleton instance; private Context mContext; private Singleton(Context context) { this.mContext = context; } p.原创 2020-07-02 10:00:26 · 286 阅读 · 0 评论 -
360外置插件无法加载&360RePlugin AndroidX化后的坑
具体的技术文档可以直接搜索360RePlugin官方技术文档,本文只解决问题问题一:classpath 'com.android.tools.build:gradle:3.1.4'和官方文档一样配置的,但是使用的是外部插件加载也就是说我们把插件plugin下载到sdcard,然后在RePlugin.intsall("xxx")但是发现加载成功了,然后PluginInfo pi = RePlugin.install(fileName);这里我说明下repload最好使用线程,不然直原创 2020-06-14 10:00:01 · 1560 阅读 · 1 评论 -
FragmentPagerAdapter.notifyDataSetChanged() 并不能更新其 Fragment
废话不多说了,什么重写方法都不好使,直接一点,如果你要刷新,那么你用错了Adapter 不是FragmentPagerAdapter而是直接使用FragmentStatePagerAdapter就OK了。一开始只要private List<Fragment> mFragments = new ArrayList<>();最后加载完毕之后private void freshFragmnet(){ mFragments.clear(); mFragm.原创 2020-06-08 15:33:35 · 213 阅读 · 0 评论 -
架构日记(十)Sophix-Hotfix集成中,友盟和阿里系jar包冲突的解决方案-离线集成
友盟推送SDK依赖部分阿里系SDK功能,其中使用并封装了TNet SDK、Network SDK、ACCS SDK三个SDK,如果与以上三个SDK冲突,必须去掉您自己使用的三个中的SDK,同时使用了alicloud httpdns SDK、alicloud utls SDK、utdid SDK ,如果与以上三个SDK冲突,您可以去掉冲突中的一个即可(注意版本兼容)。感谢您的支持与厚爱!友盟Android Push SDK与阿里集团其他库出现集成冲突的解决办法引导Android Push当前使用到的阿里原创 2020-06-03 18:46:14 · 567 阅读 · 0 评论 -
架构日记(八)Android热修复框架的集成
至于AndFix和SoPhix的原理,机制我就不赘言了,网上大把的资料,阿里云上也有非常详细的说明。本文注意介绍集成的步骤一· AndFix集成config.gradle dependencies = [ ... andfix : "com.alipay.euler:andfix:0.5.0@aar" ]base.gradleapi rootProject.ext.dependencies[原创 2020-06-02 11:03:52 · 183 阅读 · 0 评论 -
架构日记(七)Android屏幕适配分辨率限定符与smallestWidth 限定符适配原理
最终效果:在 Android Studio 中安装 ScreenMatch 插件下载插件 ScreenMatch 到本地,点击菜单栏上的 File -> Settings -> Plugins -> Install plugin from disk,然后选择我们刚刚下载的插件,最后点击 “OK”,重启 Andorid Studio 即可。如下在项目的默认 values 文件夹中需要一份 dimens.xml 文件新项目没有的话我这里提供一下<?xml ver.原创 2020-05-24 17:16:59 · 397 阅读 · 0 评论 -
架构日记(六)新建Gradle Task实现打包后上传到蒲公英
前面的文章中提到了脚本自动执行打包和安装,其实将脚本重组也是可以做到一键发布的,只是每一篇文章都有自己需要解决的问题,所以没有完全串起来实现一键打包发布。首先下面贴出蒲公英的官网地址https://www.pgyer.com蒲公英开放api地址https://www.pgyer.com/doc/view/api我们需要用到的蒲公英上传的post请求的地址https://www.pgyer.com/apiv2/app/upload剩下的细节可以自己去官网查看,接下来看代码吧原创 2020-05-22 15:11:46 · 441 阅读 · 0 评论 -
架构日记(五)多渠道打包配置
AndroidManifest.xml 里设置动态渠道变量<!--多渠道打包配置--> <meta-data android:name="UMENG_APPKEY" android:value="" /> <meta-data android:name="UMENG_CHANNEL" android:value="${UMENG_CHANNEL_原创 2020-05-22 11:45:31 · 234 阅读 · 0 评论 -
架构日记(四)命令行打签名包和Gradle DSL 自动化构建(未完)
首先来解决一些问题:本文是Mac下AndroidStudio的命令行打包 adb: command not found解决方案:打开Android Studio 启动终端 Terminal;echo $HOMEtouch .bash_profileopen -e .bash_profile//配置自己的环境变量export ANDROID_HOME=/Users/mac/Library/Android/sdkexport PATH=${PATH}:${ANDROID_HOM原创 2020-05-21 16:50:05 · 152 阅读 · 0 评论 -
架构日记(三)模块化结构中的RxJava+Retrofit的搭建MVP模式
说到RxJava,最先想到的就是观察者模式,对于rxjava2还不了解的朋友们,可以通过这个链接先去了解一下https://www.jianshu.com/p/cd3557b1a474老规矩先来看看工程结构首先我的项目中使用了两款很不错的插件 Android ButterKinfe Plugin Plus 和 MVPPlugin第一步导入依赖,在base的gradle中//RxJava+Retrofit+okhttp3 api rootProject.ext.depend.原创 2020-05-20 23:04:53 · 196 阅读 · 0 评论 -
CLEARTEXT communication to XX not permitted by network security policy 解决方案
请求框架搭建完,设置了BaseUrl开始访问,结果CLEARTEXT communication to XX not permitted by network security policy是我们的baseUrl因为是内部测试环境所以使用的是ip地址,或者http://原因:Android P系统限制了明文流量的网络请求,之下的版本没有影响,所以okhttp3会抛出该异常。解决方案1:https://解决方案2:res目录下新建<?xml version ="1.0" e原创 2020-05-20 09:59:05 · 10069 阅读 · 3 评论 -
架构日记(二) 模块化多Moudle下的gradle配置
新的工程建立,多个Moudle的gradle的管理就是一个很繁琐的问题。你有没有见过这样“The given artifact contains a string literal with a package reference 'android.support.v4.content'”之类的问题,各种v4 v7和androidx之间的冲突,或者依赖包版本不向下兼容,或者冲突包的问题?本文采用config.gradle来统一控制整个工程的各个依赖的版本控制。代替原来的在project-gradl原创 2020-05-19 11:28:11 · 350 阅读 · 0 评论 -
模块通信模块间服务调用ARouter-IProvider
新建工程,首先来看一下工程结构模块化是一种思想:实现它的方式有组件化,插件化等等。(模块化,多分包dex,热修复,SPI(ARouter))关键词app是主工程,base是所有模块都需要依赖,其他的属于普通模块,功能单一。这样的结构比起传统的工程结构更加高内聚低耦合。模块之间的通信其实也可以采用EventBus来传递数据,需要回调数据的时候可以将xxEventBus定义成interface也是可以的。EventBus的缺点:1.一经发出所有的接收器都可以接受,功能较为单一。2.Eve原创 2020-05-18 15:50:59 · 2480 阅读 · 0 评论 -
QMUIAndroid2.0.0-alpha08 学习日记之 QMUIBottomSheet
效果:第一步:app gradledependencies{def qmui_version = '2.0.0-alpha08'implementation "com.qmuiteam:qmui:$qmui_version"implementation "com.qmuiteam:arch:$qmui_version"annotationProcessor "com.qmuiteam:arch-compiler:$qmui_version"}导入成功,之后的文章中导入步原创 2020-05-16 01:15:28 · 2152 阅读 · 1 评论 -
AndroidStudio 3.6 AndroidX迁移
基本要求:Android studio 版本升级到3.2.0 以上的版本,distributionUrl的版本升级为 4.10.1以上targetSdkVersion 28gradle 插件的版本升级为 3.2.0以上gradle.properties文件下android.useAndroidX=trueandroid.enableJetifier=true新建完毕后:做好备份最后将所有的android support改为androidx即可,编译也会报错,原创 2020-05-15 17:40:35 · 411 阅读 · 0 评论 -
Mac AndroidStudio执行 gradle assembleDebug --stacktrace 报出 bash: gradlew: command not found
依赖其他Lib的时候总是会出现冲突问题,这个时候为了方便分析一般Windows下我们都会在AS的命令行中执行 gradle assembleDebug --stacktrace,但是很多人会发现MAC下貌似报出bash: gradlew: command not found话不多少,直接上解决方案:macOS下使用gradlew命令需要再命令前加上././gradlew --in...原创 2020-05-05 18:56:49 · 1961 阅读 · 0 评论 -
各种Android UI开源框架集合
https://blog.csdn.net/weixin_38775077/article/details/80980564转载 2019-07-05 10:54:37 · 501 阅读 · 0 评论 -
xUtils3.0中DbUtils的使用
xUtils3框架地址权限授予: 在项目中对于数据库的操作总体上来说,还是比较频繁的,所以我个人采用的是单例模式,将构建部分放在Application中,或者说是单独为此建立一个Application. 个人项目中的例子:CrediteApplication.java:public class CreditApplication原创 2017-03-01 15:02:54 · 361 阅读 · 0 评论 -
ListView中adapter不展示(代码冗余度的问题)
WhereBuilder builder = WhereBuilder.b("empNo", "=", UserInfo.getInstance().empNo); builder= builder.and("surveyType", "=", type); builder= builder.and("surveyState", "=", surveyState原创 2017-03-01 16:41:24 · 357 阅读 · 0 评论 -
如何通过gradle来导入jar包
很多android项目在lib文件夹下看不到任何的jar包,但是项目中确实导入了很多的第三方jar包.这里我们来看看androidstudio通过gradle来导入jar包的方法.首先我们需要进入ProjectStructure界面,打开这个界面的方式有两种:方法1:File->ProjectStructure.方法2:然后我们就可以看见ProjectStructu原创 2017-03-02 16:08:33 · 22940 阅读 · 1 评论 -
android 报错 This Gradle plugin requires a newer IDE able to request IDE model level 3 错误解决方案
如果不希望升级as的话那就直接在gradle.properties文件里面添加一句:android.injected.build.model.only.versioned = 3就OK了。原创 2018-06-04 14:22:02 · 493 阅读 · 0 评论 -
Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
解决方案在gradle.properties文件中添加android.injected.testOnly=false原创 2018-06-04 14:54:44 · 473 阅读 · 0 评论 -
Error:Execution failed for task ‘:app:preDebugAndroidTestBuild’. Conflict with dependency 。
在app的build.gradle下添加(升级到3.0造成的)androidTestCompile('com.android.support:support-annotations:26.1.0') { force = true}原创 2018-06-24 20:00:21 · 123 阅读 · 0 评论 -
Error:This Gradle plugin requires Studio 3.0 minimum
原因:as版本过低,但是可以展示不升级as。修改方法如下:解决方案:在gradle.properties中添加如下代码:android.injected.build.model.only.versioned = 3原创 2018-06-25 10:10:21 · 139 阅读 · 0 评论 -
Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
解决方案:1.gradle.properties文件添加:android.injected.testOnly=false2.修改AndroidManifest.xml 中android:testOnly="true" 改成 android:testOnly="false",或者直接去掉。原创 2018-06-25 10:34:54 · 131 阅读 · 0 评论 -
android studio gradle:download http://jcenter 卡住解决办法
使用阿里云的国内镜像仓库地址,就可以快速的下载需要的文件修改项目根目录下的文件 build.gradle :buildscript { repositories { maven{ url 'http://maven.aliyun.com/nexus/content/groups/public/'} }}allprojects { reposi...转载 2018-09-20 11:39:50 · 279 阅读 · 0 评论 -
Execution failed for task ':transform ClassesWithJarMergingForRelease'解决办法
app在导入有赞商城之后,编译正常,但是在打包的过程中出现Execution failed for task ':transform ClassesWithJarMergingForRelease错误,冲突的包是okhttp网络请求框架解决方案:compile 'com.youzanyun.open.mobile:x5sdk:6.4.12',{ exclude group:'...原创 2018-10-25 16:59:47 · 1080 阅读 · 0 评论 -
angular2 执行serve ng 命令后出现Unknown browser query 'dead'的解决方案
angular2项目,在升级了angular-cli,node,npm的版本之后由于版本差距巨大,然后就恢复了原有的版本,但是当执行ng serve的时候就出现了Unknown browser query 'dead'的问题,长时间无法解决。我们来说一下遇到这个问题的解决思路:显然是依赖browserslist的问题,那么我们首先进入该依赖组件的官方网站https://github.c...原创 2019-01-15 14:42:25 · 4146 阅读 · 0 评论 -
Mac AndroidStudio3.1.4 在OPPOR15手机上真机调试无法运行问题的解决方案
报错信息: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.banger.xiaowei.ui.BaseApplication" on path: DexPathList[[zip file "/data/app/com.banger.xxxxx-YINxedP-pIswZbzon0qenQ==/base...原创 2019-03-26 11:27:10 · 1345 阅读 · 0 评论 -
Android 按钮的onTouch事件与ScrollView滑动事件冲突
场景1:ScrollView中局部嵌套ListView一个或者多个遇到问题:手触摸在ListView上时,出现了ScrollView滑动而ListView并不会滑动。解决方案:(假设ScrollView的id为 sv ListView的id为lv)lv.setOnTouchListener(new View.OnTouchListener() { @Override...原创 2019-05-21 09:12:28 · 867 阅读 · 0 评论 -
Android Butterknife使用方法总结
https://www.jianshu.com/p/3678aafdabc7转载 2019-05-24 17:45:09 · 86 阅读 · 0 评论 -
RePlugin外置插件化的实现和踩过的坑
首先说明的是RePlugin的插件化分为,内置和外置两种方式,感觉区别不是非常大,内置的插件经过升级之后实际上和外置插件是一样的。主要考虑到后期的热更新热修复等技术的应用,本文探讨外置插件化的实现。 第一,就是宿主插件的导入:直接上代码appModule目录build.gradleapply plugin: 'com.android.applicatio...原创 2019-06-09 21:30:45 · 1937 阅读 · 2 评论 -
ViewPager+Fragment解决懒加载多次请求数据问题以及Fragment渲染完毕后在请求的方案
解决问题:1.ViewPager的懒加载模式为了让切换更加流畅,但是会多预加载的Fragment需要的数据进行网络请求,当多个Fragment都存在大量数据的时候,容易因为队列中请求较多导致卡顿,也浪费流量。2.频繁切换ViewPager造成过多的网络请求。3.在UI还没有渲染完成的时候请求数据,导致空指针异常。解决方案:抽象基类的创建public abstract clas...原创 2019-06-11 19:32:58 · 1829 阅读 · 0 评论 -
RecyclerView内部Item不居中
直接把adapter中的@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) { View view; view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.fragment...原创 2019-07-04 15:11:23 · 1392 阅读 · 0 评论 -
Retrofit2.0在android项目中的使用
Retrofit2.0github官方文档 Retrofit2.0简介: Retrofit2.0是Square公司出品的针对于Android和Java的类型安全的Http客户端,网络请求是基于OkHttp. Retrofit2.0的改进 Retrofit2.0的使用: 下载jar包 Gradle:配置: <span style...原创 2017-03-01 10:07:21 · 519 阅读 · 0 评论