
Android
neabea2016
这个作者很懒,什么都没留下…
展开
-
安卓多版本打包
Android Gradle 多版本多APK打包,图标不同,包名不同, 修改apk名字app build.gradlebuildConfigField 如果是String,字符串要多加单引号android { productFlavors { kaifa { versionCode 2 versionName '1.0.2' buildConfigField("int", "VERSION", '原创 2021-07-20 16:27:25 · 289 阅读 · 0 评论 -
Charles使用方法
转发URL:https://blog.youkuaiyun.com/mxw2552261/article/details/786451181.查询本机ip,手机wifi设置ip代理和端口,2.Proxy->Recoding Setting->include 过滤字段原创 2018-09-21 14:42:21 · 199 阅读 · 0 评论 -
Sonarqube mac中扫码安卓代码和自定义规则
Sonarqube 是代码质量检测工具,可以使用Android studio进行代码上传检测Sonarqube安装下载安装1.Sonarqube:官网链接,下载社区版2.Sonar Scanner:官网链接由于我使用的是gradle的方式其实可以不用配置,但是我也顺便配置了3.下载Jdk,注意一定要下载jdk11以后的,否则sonarqube启动不了,很重要4.网上说下载mysql,已经不需要了,8.6以后的版本自带了sonar启动1.将文件解压缩到目录修改sonarqube的wrap原创 2021-01-15 13:04:26 · 756 阅读 · 0 评论 -
Dialog外部点击监听
getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL); getWindow().setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);原创 2021-01-06 20:27:47 · 1012 阅读 · 0 评论 -
Fastjson 反序列化替换名称
后台传过来的字段有可能是result,有可能是resultListFastJson进行转换的时候统一转换为resultList注意:必须写在set get方法中public class Bean<T> { public List<T> resultList; @JSONField(name = "resultList",alternateNames = "result") public List<T> getResultList() {原创 2020-12-24 10:45:26 · 2493 阅读 · 0 评论 -
Kotlin Parcelize BaseObservable遇到的坑
我的数据类要实现Parcelable 和databing的BaseObservable()。在设置完set方法后加上了@Parcelize ,发现数据没有携带成功。单独实现Parcelable 发现并没有将实现了set方法的orgName构造出来,因此必须先实现Parcelable接口再实现BaseObservable ,并且无法使用@Parcelizeimport android.os.Parcelimport android.os.Parcelableimport androidx.datab原创 2020-11-30 16:05:31 · 675 阅读 · 0 评论 -
TextView自定义边框
实现如下自定义边框,对TextView进行重写,canvas边框即可。重点是弧线的画法画弧度主要是arcTo和addArc两个方法都是从3点钟开始,顺时针画,注意左上角和右下角是两倍的半径ArcTo 有两个传参方法可以通过RectF封装位置forceMoveTo:true 抬起画笔 false保留路径相当于上个点坐标lineTo左上角public void arcTo(float left, float top, float right, float bottom, float start原创 2020-11-27 13:57:08 · 241 阅读 · 0 评论 -
LinearLayout自动换行自定义View
import android.content.Context;import android.util.AttributeSet;import android.view.View;import android.view.ViewGroup;import android.widget.LinearLayout;import com.wttech.gm.R;import java.util.ArrayList;import java.util.List;public class WrapLi原创 2020-11-25 14:51:49 · 488 阅读 · 0 评论 -
安卓7.0以上打开文件
在网上找的文件,选择文件管理器中的文件_data无法找到,是因为QQ浏览器篡改了包名参考Github这篇文件可以解决package com.wttech.gm.util;import android.content.ContentUris;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.os.Build;import android.os.原创 2020-11-24 10:46:03 · 420 阅读 · 0 评论 -
ijkPlayer播放器使用及实现录制截图功能
B站的IjkPlayer播放器使用较为广泛,在使用其demo过程遇到许多坑,记录一下1.从官网下的demo,点击视频直接播放crash,是因为so文件需要自己手动生成,必须按照官网的如下步骤操作生成so文件,直接下载demo操作会有问题2.按照官网进行sh android/patch-debugging-with-lldb.sh armv7a操作会报如下error,无法生成.externalNativeBuild文件夹,这是由于官网.sh文件太老了。所以我直接将生成的so文件考入到ijkplayer目原创 2020-10-27 14:35:59 · 3308 阅读 · 4 评论 -
AspectJ防止按钮多次连击
使用aspectJ方式 AspectJ处理重复点击过快点击事件1.项目的gradle导入 dependencies { classpath 'com.hujiang.aspectjx:gradle-android-plugin-aspectjx:2.0.8' }2.app的gradle添加apply plugin: 'com.hujiang.android-aspectjx'3.增加ClickGap注解类import java.lang.annota原创 2020-08-26 10:24:50 · 400 阅读 · 0 评论 -
组件化配置
这篇文件介绍的很好,建议看看Android组件化方案1.创建依赖包 名为test_library2.gradle.properties中添加# true 模块编译isModule=true3.在依赖gradle 添加if (isModule.toBoolean()) { apply plugin: 'com.android.application'} else { apply plugin: 'com.android.library'}android { d原创 2020-08-19 11:29:55 · 277 阅读 · 0 评论 -
Android内存管理机制
转发Android内存管理机制这篇文章讲解的很详细,我以自己方式进行总结。Java内存分配线程私有:程序计数器,虚拟机栈,本地方法栈线程共享:堆,方法区程序计数器 :当前线程所指向的字节码指示器,Java方法存放虚拟机字节码指令地址,Native方法,计数器值为Undefined,唯一不存在OOM虚拟机栈:当线程每个方法执行时都创建一个栈帧用来存放局部变量,方法出口等,并将该栈帧放在JVM栈中。如果栈深度大于虚拟机允许最大深度,抛出StackOverFlowError,不过虚拟机基本都允许动态扩原创 2020-08-10 15:28:13 · 1002 阅读 · 0 评论 -
Android 屏幕适配方案
转发安卓适配方案今日头条方案适配原因原生渲染前会将dp转为px,dpi就是导致差异化因素也叫像素密度,根据设备分辨率和尺寸计算得出,出厂时已经决定了density = dpi / 160px = dp * density适配方案1.dimens基于px适配(宽高限定符适配)在res文件中,定义不同分辨率px参数,例如values-480*320 ,但是这种方案由于手机分辨率太多,局限性太高,弃用。2.dimens基于dp适配(smallestWidth适配)这种是根据最小宽度限定符,a原创 2020-07-30 13:41:07 · 400 阅读 · 0 评论 -
ConcurrentHashMap
ConcurrentHashMap 与hashMap基本相同,只是ConcurrentHashMap是线程安全的,jdk1.8实现原理基本相似,是对Hashmap的改造。高并发编程系列:ConcurrentHashMap的实现原理Java:CAS(乐观锁)JDK 1.7以前使用分段锁,一个Segment数组和多个HashEntry组成,Segment数组是将一个大的table分割成多个小的table来进行加锁,每一个Segment元素存储的是HashEntry数组+链表。JDK1.6 优化二次Ha原创 2020-07-30 09:21:46 · 113 阅读 · 0 评论 -
自定义view转Bitmap
将自定义view填充数据后,转成bitmap,填充到ImageView中1.自定义布局里面是RecycleView用于填充数据,ConstraintLayout是为了设置宽高生效,多加了层布局test.xml<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schem原创 2020-06-12 14:19:33 · 1498 阅读 · 0 评论 -
TextView部分颜色展示点击
TextView长文字 ,部分文字颜色不同,并且可以分段点击。使用SpannableString,多个文字不同颜色不同点击,新建多个totalspan实现 SpannableStringBuilder spannableBuilder = new SpannableStringBuilder("TextView 要真是的内容"); ClickableSpan totalspan = new ClickableSpan() { @Override原创 2020-05-22 14:18:20 · 213 阅读 · 0 评论 -
layout_behavior could inflate subclass
CoordinatorLayout Fragment的layout_behavior属性,添加自定义Behavior报错,引入原生的就没事Could no inflate Behavior subclass原因:1.因为CoordinatorLayout是写着library里的,所以一定要引入全包名app:layout_behavior="com.test.view.BottomSheetBehavior"2.构造方法一定要有两个 public BottomSheetBehavior() {原创 2020-05-16 17:05:40 · 425 阅读 · 0 评论 -
RecycleView Item显示不全滚动方法
RecycleView 横向滚动实现类似Tablelayout,点击item,实现页面切换,相当于Title点击效果。但是不同item内容长度不一,多个item一行无法显示,item有的无法显示全,想要实现点击不全item,RecycleView自动滚动显示全。注意以下方法是横向滚动RecycleView方案一View为点击的Item,position是点击位置。getLocalVisi...原创 2020-05-07 13:35:34 · 1488 阅读 · 0 评论 -
Jni 三方so文件集成到自己so文件
这只是个示例,通过静态注册生成的so代表三方的so文件,集成生成一个so文件,提供给Java调用。如果不会静态注册,参考之前文章Jni使用方法1.在jni目录下新建test文件夹,将静态生成so,文件房子...原创 2020-05-07 09:09:41 · 639 阅读 · 0 评论 -
NestedScrollView fragment覆盖部分RecycleView
NestedScrollView 里面包含RecycleView和Fragment,在加载数据后,后加载的Fragment覆盖了部分RecycleView数据。原因是NestedScrollView 子View设置了margintop和marginbottom,改成padding就可以了问题代码 : <androidx.core.widget.NestedScrollView ...原创 2020-04-26 16:21:34 · 294 阅读 · 0 评论 -
Jni使用方法
Android stuido创建第一个Hello Jni项目下载NDK,配置ToolAndroid stuido sdk下载ndk包配置环境变量终端输入 vim ~/.bash_profile ,配置NDK和path终端输入ndk-build,显示如下没找到directory为配置安装成功导入 ndk包,project structureAndroid stuido 配置Ex...原创 2020-04-22 12:09:34 · 772 阅读 · 0 评论 -
跳转白屏问题
使用Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK进行Activity跳转回出现白屏,需要增加windowDisablePreview这个主题属性 <activity android:name=".MainActivity" android:theme="@st...原创 2020-04-21 09:08:41 · 703 阅读 · 0 评论 -
权限判断
使用三方控件blankj的权限导包:implementation 'com.blankj:utilcode:1.28.0'blankj的权限,只有有一条授权就会调用onGranted(),有一条没授权调用onDenied(),全部授权则不调用。所以判断是否全部授权比较麻烦,通过handler延时方式解决,没有权限结束,全部授权跳转界面 Handler handler = new My...原创 2020-04-16 09:31:28 · 618 阅读 · 0 评论 -
RecycleView横向滑轮轮实现
RecycleView横向滑动,要求实现如下滑轮蓝条可以随着手势跟随RecycleView界面左右滑动,类似滚轴1.自定义View,单独设置setxoffSet()可实现滚动package com.custom;import android.content.Context;import android.content.res.TypedArray;import android.gra...原创 2020-04-15 18:55:29 · 384 阅读 · 0 评论 -
GreenDao使用方式
用过litepal,抛弃litepal是因为多层级时数据插入查询太慢了,greendao也没有进项大量数据测试,也是尝试阶段。1.项目gradlebuildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { ...原创 2020-04-13 10:38:22 · 268 阅读 · 0 评论 -
位置服务判断与开启
动态获取位置权限后,如果不开启位置服务仍然定位不了1.PermissionsUtils 判断位置服务是否开启package com.mcmo.z.baselibrary.util;import android.content.Context;import android.os.Build;import android.provider.Settings;import android....原创 2020-04-09 15:14:15 · 911 阅读 · 0 评论 -
Elevation阴影使用
elevation属性是design包自带的阴影功能,有几个注意事项1.要设置background,否则无效 android:background="@color/white"若不是设置,则需要设置bound,但是效果不太一样android:outlineProvider="bounds"2.要设置父布局宽高大于当前布局,才能显示阴影 <LinearLayout ...原创 2020-01-07 18:09:02 · 1158 阅读 · 0 评论 -
BottomNavigationBar使用方法
转发 这篇文章有角标的使用方式使用三方BottomNavigationBargradle implementation 'com.ashokvarma.android:bottom-navigation-bar:2.1.0'xml <com.ashokvarma.bottomnavigation.BottomNavigationBar android...原创 2019-12-31 16:15:17 · 403 阅读 · 0 评论 -
Android Studio查看总代码行数
查看代码行数转载 2019-12-30 15:29:56 · 3682 阅读 · 1 评论 -
App图标数字Badge实现
使用第三方控件导入第三方角标库ShortcutBadge这个库使用各手机厂商系统的角标展示,比较推荐使用。但是小米手机使用的是notification进行推送,区别其他厂商,三方文档有对小米适配,但是使用demo还是无法在小米手机显示角标。小米手机方案原因是:app在打开状态下进行推送,系统会认为推送完成,所以不展示。解决方案:在app关闭后,进行延时推送。并且点击进入app后,角标会自...原创 2019-12-25 16:04:25 · 882 阅读 · 0 评论 -
Drawable与TextView第一行对齐,后拼接不同颜色文本
实现左边drawable只与第一行对齐,置顶拼接在文本后方,可随文本输入向后移动1.导入三方框架,实现第一行对齐implementation 'com.github.ithedan:TextViewDrawable:v1.0'2.XML <com.hedan.textdrawablelibrary.TextViewDrawable android...原创 2019-12-19 09:57:18 · 1631 阅读 · 0 评论 -
动态设置 Shape color
动态设置Shape背景color GradientDrawable gradientDrawable = (GradientDrawable)view.getBackground(); gradientDrawable.setColor(context.getResources().getColor(color));TextView设置右图片 textview.setCompoundD...原创 2019-12-17 10:23:29 · 342 阅读 · 0 评论 -
腾讯X5实现office预览
该内核只能预览下载到本地的文件初始化X51.SDK下载、2.导入so文件,最后一个3.在app gradle中 defaultConfig { ndk { //选择要添加的对应cpu类型的.so库。 abiFilters 'armeabi','x86' }}implementation files('l...原创 2019-12-09 11:00:50 · 1454 阅读 · 0 评论 -
ConstraintLayout布局动态设置
记录下布局依赖变更,clone复制原先布局,一定要写,margin只能设置top,downapplyTo应用布局 ConstraintSet set = new ConstraintSet(); set.clone(clDetail); set.connect(divider.getId(), ConstraintSet.TOP, recycl...原创 2019-11-19 14:56:28 · 5825 阅读 · 0 评论 -
View绘制虚线
dotted_line.xml<?xml version="1.0" encoding="utf-8"?><shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <size android:height="1dp"/>//虚...原创 2019-11-13 11:45:10 · 195 阅读 · 0 评论 -
Viewpager wrapContent占全屏问题
转发:文章选用自定义Viewpagerimport android.content.Context;import android.support.v4.view.ViewPager;import android.util.AttributeSet;import android.view.View;public class WrapContentHeightViewPager exte...原创 2019-11-11 16:48:43 · 574 阅读 · 0 评论 -
沉浸式状态栏方案
1.ActionBar隐藏首先说一下ActionBar怎么隐藏(1)在Mainfest设置,修改主题使用nobar <application android:theme="@style/TranslucentTheme" </application>style.xml<style name="TranslucentTheme" parent="Th...原创 2019-10-29 19:38:06 · 205 阅读 · 0 评论 -
ImageView区域点击效果
先上效果图转发:参考文章1.自定义ClipImageView实现11行11列点击效果package com.tayh.buttontest.ClipImage;import android.content.Context;import android.graphics.Canvas;import android.util.AttributeSet;import android.v...原创 2019-10-17 10:55:52 · 783 阅读 · 0 评论 -
Android扫二维码
我使用了github yipianfengye的库,他集成了zxing的库https://github.com/yipianfengye/android-zxingLibrary1.Mainfests添加权限,震动的权限很重要,没有onActivityResult返回的data为null<uses-permission android:name="android.permission....原创 2018-10-10 16:24:22 · 217 阅读 · 1 评论