android
只是丶很孤单
QQ:1308108803
展开
-
Mac环境配置及开发遇到的问题记录
Mac环境配置及开发遇到的问题记录环境配置1. zsh 切换 bash 提示 chsh: no changes made 问题2. zsh: command not found: brew3. 无法访问 使用国内镜像4. git 缺失开发遇到的问题1. 允许任何来源的软件2. XCode 运行真机3. Flutter 运行真机报错4. 无法打开“iproxy”,因为无法验证开发者。环境配置目前是参考这个配置的iterm参考这个配置iterm也可以配置过程中出现的问题1. zsh 切换 bash原创 2022-03-30 14:48:47 · 3462 阅读 · 0 评论 -
Android TextView 文字两端对齐
Android 自带的 TextView 的对齐方式只能左对齐或者右对齐,如果想要两端都对齐就需要自定义控件,但是有一个更简单的方法就是使用 WebView, 通过设置 text-align:justify 就可以XML 文件:<WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="wrap_content" android:backg原创 2021-10-11 17:02:57 · 3092 阅读 · 1 评论 -
CSS样式加载base64格式图片失败
CSS样式加载base64格式图片失败.icon { background-image:url('data:image/png;base64, iVBORw0KGgoAAAANSUhEUgAAABsAAAAjCAMAAABSI4GnAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAG6ADAAQAAAABAAAAIwAAAABnXqe+AAABF1B原创 2021-08-31 18:23:27 · 617 阅读 · 0 评论 -
java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema
今天执行 flutter doctor -v 的时候发现一个问题,提示信息是[!] Android toolchain - develop for Android devices (Android SDK version 30.0.2) • Android SDK at /Users/zhaopingfu/Library/Android/sdk • Platform android-S, build-tools 30.0.2 • Java binary at: /Applicati原创 2021-05-25 10:02:43 · 4619 阅读 · 0 评论 -
Android--过度绘制优化
什么是过度绘制过度绘制:GPU的绘制过程就和刷墙一样,一层一层的 进行,16ms刷一次,这样就会造成图层覆盖的现象,即无用的图层被绘制在底层,造成不必要的浪费。发现问题GPU过度绘制的的集中情况:1、布局层次太深,重叠性太强,用户看不到的区域GPU也会渲染,导致耗时增加。2、自定义控件中 onDraw 方法做了过多重复绘制找到问题1、使用Android手原创 2018-01-09 17:25:54 · 327 阅读 · 0 评论 -
Android--内存泄漏
1、内存管理内存模型Android原生开发以java为主。在java中,Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,所以Java内存模型,也就是指Java虚拟机的运行时内存模型。java中内存全权交给虚拟机去管理,那虚拟机的运行时内存是如何构成的?很多时候,我们提到内存,会说到堆和栈,这是对内存粗略的一种划分,这原创 2018-01-10 17:11:11 · 226 阅读 · 0 评论 -
解决All flavors must now belong to a named flavor dimension.
AndroidStudio升级到3.0之后发现在写productFlavors执行的时候会报错productFlavors { dev { minSdkVersion 21 } prod { minSdkVersion 14 }}报错信息:Error:All flavors must now belong to a n原创 2018-01-28 17:27:12 · 351 阅读 · 0 评论 -
AndroidStudio 创建 java-library 引入第三方库 NoClassDefFoundError
在 AndroidStudio 中创建了一个 java-library ,引入第三方库,不管是 jar包 还是在 build.gradle 中添加依赖,在运行的时候 java.lang.NoClassDefFoundError 原因这里没有把这个 jar 包添加到 classpath, 要工具依赖 ,让工具执行引入依赖。不然直接 run as 不帮你配制解决1、在 ...原创 2018-02-05 09:43:57 · 4202 阅读 · 3 评论 -
Java数据结构--图的的最短路径与拓扑排序
图的最短路径是图中一个点到其他点的最短路径最短路径拓扑排序原创 2018-02-26 17:19:28 · 311 阅读 · 0 评论 -
Java数据结构--图的遍历与最小生成树
图的遍历图的遍历分为深度优先遍历(相当于树中的前序遍历)和广度优先遍历(类似树中的层级遍历)深度优先遍历广度优先遍历最小生成树一个连通图的生成树是一个极小的连通子图,它含有图中全部的顶点,但只有足以构成一棵树的n-1条边。我们把构造连通网的最小代价生成树。称为最小生成树。找连通网的最小生成树,经典的有两种算法,普里姆算法和克鲁斯卡尔算法普里姆算法克鲁斯卡尔算...原创 2018-02-21 14:27:27 · 547 阅读 · 0 评论 -
android--App启动性能优化
一、应用的启动方式1、冷启动:当应用启动时,后台没有该应用的进程,这时系统会重新创建一个新的进程分配给该应用,这种启动方式就是冷启动。2、热启动:当应用启动时,后台已有该进程的应用(例:按back键、Home键、应用虽然会退出,但是该应用的进程依然保留在后台,可进入任务列表查看),这种情况下直接启动该应用,这种方式就是热启动。特点1、冷启动:因为系统会重新创建一个新的进程分配给它,所以会先创建和初始原创 2017-12-29 20:52:31 · 337 阅读 · 0 评论 -
Android--onTrimMemory与onLowMemory
onTrimMemory与onLowMemory 我们的Application、Acivity、Service、ContentProvider与Fragment都实现了ComponentCallbacks2接口。 所以能够重写 onTrimMemory与onLowMemory函数。OnTrimMemory的参数是一个int数值,代表不同的内存状态: 4.1 当我们的应用程序正在运行时:原创 2018-01-11 21:40:00 · 381 阅读 · 0 评论 -
Android--SparseArray、ArrayMap
在Android开发时,我们使用的大部分都是Java的api。其中我们经常会用到java中的集合,比如HashMap,使用HashMap非常舒服,但是对于Android这种内存敏感的移动平台,很多时候使用这些java的api并不能达到更好的性能,相反反而更消耗内存,所以针对Android,google也推出了更符合自己的api,比如SparseArray、ArrayMap用来代替HashMap在有原创 2018-01-11 21:31:26 · 254 阅读 · 0 评论 -
Android--内存抖动、OOM
一、内存抖动内存抖动是指内存频繁地分配和回收,而频繁的gc会导致卡顿,严重时和内存泄漏一样会导致OOM。内存抖动为什么会造成OOM这关系到Java的垃圾回收。二、垃圾回收在对对象进行回收前需要对垃圾进行采集,不同的虚拟机实现可能使用不同的垃圾收集算法,不同的收集算法的实现也不尽相同。不同的算法各有各的优劣势。常用的收集算法有:1、标记-清除算法(Mark-Sweep)原创 2018-01-11 15:17:07 · 455 阅读 · 0 评论 -
android 跳转百度,高德,腾讯地图以及商店
DEMO地址:https://github.com/zhaopingfu/GDTest/blob/master/app/src/main/java/com/pf/gdtest/util/MapUtil.java跳转到百度地图APP导航 参考 http://lbsyun.baidu.com/index.php?title=uri/api/android跳转到百度地图网页导航 参考 http:原创 2017-12-03 11:16:17 · 1224 阅读 · 0 评论 -
android 滑动控件嵌套的问题
DEMO地址:https://github.com/zhaopingfu/GDTest/tree/master/app/src/main/java/com/pf/gdtest/widget之前用高德地图,放在ScrollView中,两个都是可以滑动的控件,所以有点滑动冲突的问题解决方法:将地图控件外层的父布局重写,当事件过来的时候告诉scrollview这个事件我要处理,让他不要拦截 publ原创 2017-12-03 11:10:16 · 227 阅读 · 0 评论 -
Error:android-apt plugin is incompatible with the Android Gradle plugin. Please use 'annotationProc
在AndroidStudio更新到3.0之后发现上面的配置不能用了,这里记录下解决方法首先把项目下的build.gradle中的classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’删掉把module下面的build.gradle最上面引入的插件删掉,不管是下面这两个中的哪一个,都删掉 apply plugin: ‘com.neen原创 2017-11-16 10:03:15 · 2627 阅读 · 3 评论 -
AndroidStudio使用Butterknife
好记性不如烂笔头,这句话是真的。在Android中我们经常要做很多的无用功,比如诸多的findViewById(),后来ButterKnife出来了,一时间大家都说好,我也在项目中用到了,在这里记录一下。1.下载插件我这里用的是AndroidStudio,可以在File -> Settings -> Plugins 里面搜索Butterknife下载安装,装完重启。2.在项目根目录下的build.g原创 2017-06-27 13:59:45 · 282 阅读 · 0 评论 -
java 数据结构--栈和队列
栈和队列DEMO地址:https://github.com/zhaopingfu/MDataStruct栈:只允许在一端进行新增和删除元素(先进后出)个人写了个DEMO基于数组的顺序栈基于逻辑连续的链式栈基于LinkedList实现栈队列:只允许在一端新增元素,在另一端删除元素(先进先出)个人写了个DEMO基于数组实现的线性队列基于数组实现的线性循环队列基于链表的队列基于Linked原创 2017-11-15 15:29:38 · 189 阅读 · 0 评论 -
Eclipse中Android项目Errors running builder 'Android Resource Manager' on project XXX
Eclipse下Android项目编译的时候报了 Errors running builder 'Android Resource Manager' on project XXX 错误,最后发现是工程目录下少了一个文件 project.properties解决办法: 在工程目录下新建文件 project.properties,在里面写 target=android-xxx,例如: targe...原创 2018-03-12 17:17:23 · 1184 阅读 · 0 评论 -
序列化与反序列化
序列化和反序列化1、什么是序列化和反序列化?比如说,我看到埃菲尔铁塔很漂亮,想把它搬到我家门口,要求搬过去之后还是原来的样子,怎么办呢?我需要把每一根钢筋都拆下来,做上标记,然后把钢筋都装到飞机上运到目的地之后,把钢筋都卸下来,然后按照之前的标记,把钢筋组装起来,就变回埃菲尔铁塔了这就是现实生活中的序列化和反序列化,那么反映到程序里面是怎样的呢?要把一个对象,写入到文件里,在需要...原创 2019-10-04 09:38:55 · 189 阅读 · 0 评论 -
Android热修复原理
Demo1、热修复原理一般我们自己写的类都是由 PathClassLoader 加载的,类加载器在加载某个类的时候是先去父加载器那里找,父加载器再去爷爷加载器那里找,一直往上,如果都找不到,才自己去找,这就是java的双亲委托机制通过 ClassLoader.loadClass 的时候会先走 parent 的 loadClass, 如果没找到会自己去找。调用 findClass 方...原创 2019-10-03 21:43:23 · 271 阅读 · 0 评论 -
Android 热修复调研
SophixAndFix 在 GitHub 上的最后一次提交记录是在三年前了,而且提的很多 issue 也没有人回复,估计是放弃这个方案了,在推 Sophix .Sophix:支持方法级别的修复支持资源的修改,添加补丁包较小傻瓜式接入看了下官网的介绍,然后自己集成了一下他的SDK,模拟了几个问题,依次生成补丁包,修复,走了一遍流程我这里试了三个版本的 4.4、 6.0、 9...原创 2019-08-08 14:18:38 · 456 阅读 · 0 评论 -
Android 事件传递
getAction() 和 getActionMasked()getAction() 是以前的版本出来的getActionMasked() 是为了多点触控, 现在用的话都选这个就好shouldDelayChildPressedState()自定义容器的时候, 如果不需要滚动, 那么需要重写 shouldDelayChildPressedState() , 并且返回 false , 这个方法...原创 2019-07-21 20:03:36 · 385 阅读 · 0 评论 -
Android 自定义控件的 measure, layout
Android 自定义控件的 measure, layoutAndroid 自定义 View 一般都要写 测量, 摆放在 onMeasure 里面测量出自己的宽高, 然后父控件会根据自己测量出来的宽高来进行摆放(layout)如果不按照父容器的约束来, 就会出问题重写了 layout 方法, 摆放的很大, 但是父容器那里的尺寸并没有改, 所以其他的 view 就会有重叠<?xml ...原创 2019-07-10 10:04:13 · 233 阅读 · 0 评论 -
Andrid Bimap 和 Drawable
Bitmap 和 Drawable1、Bitmap 是什么?Bit 位 map 图Bitmap 存储的是每一个像素点的信息Drawable 是一个可画的对象, 可能是一个位图(BitmapDrawable), 也可能是一个图形(ShapeDrawable)class DrawableView(context: Context?, attrs: AttributeSet?) : View(...原创 2019-07-08 15:28:27 · 295 阅读 · 0 评论 -
Android 属性动画与硬件加速
1、属性动画1.1、ViewPropertyAnimator/*** 最简单的动画,只能 平移,旋转,缩放等简单的*/private fun animation() { view.animate() .translationX(dp2px(200F)) .translationY(dp2px(200F)) .scaleX(1.5F) ...原创 2019-07-08 10:12:24 · 920 阅读 · 0 评论 -
Gradle 任务
1、任务执行顺序 task clean(type: Delete) { println "task clean 1111111" delete rootProject.buildDir doLast { println "task clean dolast one" } doLast { pri...原创 2019-07-08 10:11:30 · 558 阅读 · 0 评论 -
Android 文字绘制和Camera几何变换
文字绘制文字绘制的位置是基于基线(BaseLine)// 0F, 0F 指的是基线的位置, 而不是文字的左上角位置, 基线在文字左下角偏上一点点的位置canvas.drawText(mText, 0F, 0F, mTextPaint)TextView 内容准确定位getTextBoundsmTextPaint.getTextBounds 可以获取到这一行文字的准确坐标, 然后根...原创 2019-07-02 13:39:21 · 395 阅读 · 0 评论 -
Android 绘制 Path
Path.Direction顺时针 Path.Direction.CW逆时针 Path.Direction.CCWmPath.addCircle(dp2px(100F), dp2px(100F), dp2px(50F), Path.Direction.CW)mPath.addCircle(dp2px(180F), dp2px(100F), dp2px(50F), Path.Dire...原创 2019-07-02 10:20:50 · 383 阅读 · 0 评论 -
横向摆放控件,空间不足时右边不动,挤压左边
需求: 横向摆放控件 当数据不多的时候,靠左边显示 当左边控件的数据慢慢变多,就往右边挤 当右边的控件到达最右边的时候,固定右边不动,挤压左边的控件解决方法:这里到了 google 的 FlexboxLayout: com.google.android:flexbox:xxxlayout_flexShrink 属性可以解决这个问题 layout_flexShrink 属性定...原创 2019-05-14 10:40:23 · 930 阅读 · 0 评论 -
ffplay播放pcm
ffplay 播放 pcm 数据一、正常播放ffplay 是 ffmpeg 中的一部分,所以需要先下载 ffmpeg,可以参考这里ffplay 需要在 cmd 下输入命令ffplay -ar 44100 -ac 1 -f s16le -i ./201904091310_test.pcm-ar 表示采样率-ac 表示音频通道数 单声道是 1,Android 中为 AudioForm...原创 2019-04-15 14:51:01 · 9649 阅读 · 0 评论 -
Android library 库分享不同的内容
library 库分享不同的内容问题:library module 的 assets 下有图片也有一些别的数据, A 库引入 library 的时候只要图片, B 库引入 library 的时候只要数据,这个时候该怎么办呢1、在 gradle 3.0 之前library 的 build.gradle 配置风味// 默认只发布release的,这里修改为发布多种的pub...原创 2018-08-19 12:38:12 · 270 阅读 · 0 评论 -
Android 动态替换 Manifest.xml中的值
根据情况替换 Manifest.xml 中的值android 中有很多个渠道,每个渠道都有 debug 和 release 版本, 如果Manifest.xml 中每个版本有不同的值一般的可以用 manifestPlaceholders = [APP_KEY : '对应的值'] 来替换,在 debug和 release 的时候也可以,但是多渠道的时候可能就会有些问题了解决方式...原创 2018-08-18 15:37:19 · 5113 阅读 · 0 评论 -
apt 调试
AndroidStudio 下 apt 调试测试 apt 的时候创建一个 java library,写个类继承 AbstractProcessor之后在 process 中调试注意:在那个模块调试,就在那个模块下的相应任务下右键创建任务注意:在执行任务之前,确保 app 模块下引入了 aptannotationProcessor project(':...原创 2018-04-07 11:54:01 · 6209 阅读 · 1 评论 -
Android多语言切换,字体风格,简体转繁体
DEMO地址:https://github.com/zhaopingfu/LanguageTypefaceAndroid中多语言切换在线简体中文转为繁体中文:http://www.vifo.com.cn/fanti/使用第一步:准备资源文件将要显示的资源文件放在对应文件夹的strings.xml中简体中文:/res/values/strings.xml繁体中文:/res/values-zh-r原创 2017-11-14 09:37:15 · 6169 阅读 · 0 评论 -
java 数据结构--哈希表
DEMO地址:https://github.com/zhaopingfu/MDataStructjava中常用的哈希表就是HashMap,还有一个LinkedHashMap,还有一个HashTableHashMap:无序散列链表,线程非安全LinkedHashMap:有序散列链表,线程非安全HashTable:无序散列链表,线程安全线性表的优点是查找快,但是添加和删除元素慢 链式表的优点是原创 2017-11-17 17:22:06 · 278 阅读 · 0 评论 -
Android-->build.gradle-->productFlavors
首先贴出官网:https://google.github.io/android-gradle-dsl/current/index.html最外层的build.gradle是配置一些module共用的内容// Top-level build file where you can add configuration options common to all sub-projects/modules./原创 2017-09-06 16:43:19 · 529 阅读 · 0 评论 -
Android-->build.gradle-->buildTypes
我们在用androidStudio开发安卓项目的时候经常要配置build.gradle,那么到底怎么配置呢android {compileSdkVersion 25buildToolsVersion "25.0.3"defaultConfig { applicationId "com.pf.listener14" minSdkVersion 15 targetSdkVe原创 2017-09-08 11:48:39 · 1060 阅读 · 0 评论 -
Android引入依赖
app下的build.gradle configurations { abc { }}//添加一个本地依赖库,防止下面添加aar文件时找不到repositories { flatDir { dir('libs') }}dependencies { //这句话表示自动依赖libs路径下的.jar文件 compile fileTr原创 2017-09-15 11:49:38 · 515 阅读 · 0 评论