项目实战
文章平均质量分 56
解决实际项目开发期间遇到的问题
Gerry_Liang
我很懒,还没有简介
展开
-
一分钟配置Mac电脑SSH key ED25519
前提是你知道gitlab是什么,你知道要把公钥的文本复制到什么gitlab的什么地方如果你不知道这两个大前提,请去看下这篇博客配置Gitlab SSH如果你知道这两个前提,请继续打开任意一个终端窗口开始愉快的敲代码: cd ~/.ssh如果提示cd: no such file or directory: ~/.ssh就说明是没有配置过,是正常的,继续操作即可git config -...原创 2020-04-10 15:19:29 · 4430 阅读 · 2 评论 -
DiffUtil + RecyclerView 在 Kotlin中的使用
很惭愧, 做了多年的Android开发还没有使用过DiffUtil这样解放双手的工具。原创 2023-12-18 23:34:21 · 1421 阅读 · 0 评论 -
【开发问题记录】01—大量数据同时插入数据库导致的时间戳重复问题
也可以从数据库的查询上考虑如何解决: 时间戳相同的情况下,如何自定义返回顺序。这个我还没有研究明白,欢迎大家补充。推荐指数 5颗星 ⭐️⭐️⭐️⭐️⭐️。原创 2023-07-30 23:33:55 · 512 阅读 · 0 评论 -
Mac环境下生成 Protobuf Java文件
协议缓冲区是一种语言无关、平台无关的可扩展机制,用于序列化结构化数据。https://developers.google.com/protocol-buffers因为传输的是二进制数据流体积更小速度更快,协议轻便但是如何能对应上我们的使用Java Dart Go语言呢?文章目录1 安装protoc 命令2 新建 lbs_locations.proto3 执行命令1 安装protoc 命令brew install protoc2 新建 lbs_locations.protosyntax = "原创 2022-05-17 00:09:57 · 1038 阅读 · 0 评论 -
【registerActivityLifecycleCallbacks】它是如何实现Acitivity页面变化监听的?
当我们想监听App页面变化(比如打开了哪个页面,关闭了哪个页面)的时候我们会使用registerActivityLifecycleCallbacks就像下面的代码一样。public class MyApplication extends Application { @Override public void onCreate() { super.onCreate(); registerActivityLifecycleCallbacks(new Acti原创 2021-10-10 11:33:38 · 289 阅读 · 0 评论 -
聊聊 Looper中的 用户态、内核态、IO多路复用
做Android开发的小伙伴一定都熟悉Android的消息循环机制(Looper MessageQueue Handler), 相信也一定知道Looper是一个死循环,循环中 MessageQueue 不停地去拿消息处理,如果拿不到就阻塞当前主线程执行,下面重温一下这块的代码Looper.javapublic static void loop() { //... 省略无关代码 for (;;) { // 这里我把官方注释放这里了,next方法执行过程中可能会发生阻塞原创 2021-08-08 23:15:25 · 465 阅读 · 0 评论 -
Android 根据账号和密码自动连接 WIFI (兼容Android 10)
源码地址在这里在这里!!!!!面向谷歌搜索了很多博客,基本上都是失效的,只要你的compileSdkVersion版本高于28在Android 10设备上就无法连接wifi,虽然提示你是连接成功了但是实际上信号一直不可用。解决办法目前只有这个: compileSdkVersion 28 buildToolsVersion "28.0.x" //可以是28.0.2 或者其他的 28下面的都可以看下如何使用package com.hello.wifi;import android.os.Bu原创 2021-04-15 22:29:03 · 5230 阅读 · 8 评论 -
最新实测可用的获取Android悬浮窗权限代码
<uses-permission-sdk-23 android:name="android.permission.SYSTEM_ALERT_WINDOW"/><uses-permission-sdk-23 android:name="android.permission.SYSTEM_OVERLAY_WINDOW"/> public boolean checkPermission(Activity activity) { final int versio原创 2021-03-13 10:43:35 · 4096 阅读 · 1 评论 -
请求读写权限的误区
在我刚开始学习Android的时候,老师就告诉我们文件读写一定要在清单文件中申请读写权限当时Android 6.0系统刚好增加了运行时权限,所以老师每次读写文件都会把targetSdkVersion从23降低到22,避免增加代码量动态申请权限。当时年轻呀,咱也不敢说,咱也不敢问,咱也没有多想其他的就这样就当成铁律记了多年,直到最近我写一个demo居然不申请权限也可以读写文件——毁了我的三...原创 2020-04-28 13:07:09 · 478 阅读 · 0 评论 -
视图绑定取代findViewById
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...原创 2020-03-12 23:34:20 · 385 阅读 · 0 评论 -
Oaid获取接入流程
自己项目中遇到了一个获取oaid的需求,看了下该作者的demoAndroid获取OAID博客地址感谢作者的同时自己也对这个demo进行了优化,结尾附上自己的项目github地址1 什么是OAID?用来做什么的?随着大数据和人工智能时代的到来,数据的价值也逐渐增加,移动终端设备标识码,如国际移动设备识别码(IMEI)、Wi-Fi MAC地址、SIM卡国际移动用户识别码(IMSI)和蓝牙地址等...原创 2019-12-24 23:26:33 · 11108 阅读 · 7 评论 -
使用SharedPreference保存序列化对象
Sp工具类里增加下面两个方法1 SP_NAME 就是一个字符串,可以命名为"项目名_sp"2 存储的对象一定要实现Serializable而不是Parceable,注意成员类也要实现Serializablepublic class ChildModeBean implements Serializable { /** * code : 200 * dat...原创 2019-11-13 22:26:46 · 410 阅读 · 0 评论 -
EditText限制输入中文英文最长24个字符
需求:昵称只可以输入数字,字母,汉字,最长24个字符长度,1个汉字占用2个字符可以简单的理解:最多12个汉字(因为一个汉字就是2个字符了,最长才24个字符)24=汉字*2+字母+数字必然是对EditText进行一番操作了public class ChineseInputFilter implements InputFilter { public ChineseInpu...原创 2019-11-09 16:05:30 · 990 阅读 · 0 评论 -
Android 底部弹出Activity
网上百度了很多方案,很多都是过时的,下面介绍我的方案:第一步:新建3个anim文件1 bottom_in.xml(底部弹入动画)<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android"> <translate android:fr原创 2018-03-05 22:49:54 · 9143 阅读 · 4 评论 -
Android进阶之Fragment与Activity之间的数据交互
看到一片关于Activity和Fragment交互的文章,mark一下Android进阶之Fragment与Activity之间的数据交互转载 2018-03-12 21:33:17 · 508 阅读 · 0 评论 -
Android TextView 超链接显示及跳转
首先看下效果图点击“详情页”进入到我们的App的另一个页面,这是如何实现的呢?先看下代码textView = findViewById(R.id.text);SpannableString ss = new SpannableString("具体内容请点击详情页");ss.setSpan(new CustomURLSpan(""), 7, 10, Spanned.SPAN_IN原创 2018-03-04 22:29:35 · 1699 阅读 · 0 评论 -
Android ellipsize属性(多余文字用省略号显示)
TextView中可以设置一个ellipsize属性,作用是当文字长度超过textview宽度时的显示方式: 例如,字符串”abcedfghijklmn” 的各种现实效果:android:ellipsize=”start”—–省略号显示在开头 “…lmn” android:ellipsize=”end”——省略号显示在结尾 “abcdec…” android:ellipsize=”middl原创 2018-01-30 14:18:06 · 13717 阅读 · 0 评论 -
RecyclerView局部刷新
刷新局部靠的是下面两个方法: notifyItemChanged(position,”hello”)不是onBindViewHolder(BaseHolder holder, int position)而是@Override public void onBindViewHolder(BaseHolder holder, int position, List paylo原创 2018-01-16 23:12:18 · 1336 阅读 · 0 评论 -
事件分发机制再探秘
LinearLayout里面放一个Button<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools"...原创 2019-06-27 17:15:21 · 228 阅读 · 0 评论 -
Android实现朋友圈全文/收起的功能
看下效果图:首先我们先理解收起和全文的逻辑: 假如产品设定:文字超过三行就要折叠 1 如果文字不超过三行,那么就不显示“全文”和“收起” 2 如果超过了三行显示“全文”,点击全文就可以看到所有文字,同时最下面显示“收起”难点在如何记录每个Item的收起和全文的状态?我们知道RecyerView和ListView都是复用ViewHolder,所以免不了有原创 2018-01-14 21:44:39 · 4072 阅读 · 0 评论 -
Android中的富文本
发现有个作者写的富文本例子很多,可以参考富文本使用操作大全原创 2018-05-07 21:42:35 · 562 阅读 · 0 评论 -
Android 动态申请权限demo
App一直没有做过权限处理,一直依赖系统的二次处理也不能解决问题,所以静下来研究了下现在市面上的权限处理方法,目前市面上的处理就是简单粗暴——你不开权限,就无法使用我们的App举例来说,应用宝,新浪微博,高德地图,等App,请求的方式也都是第一次打开就开始申请全部权限,用户一次性点个够这种做法不能说是流氓,因为比如高德地图最重要的就是获取地理位置功能,你直接关掉了这个权限自然App就无法正...原创 2018-07-02 20:05:22 · 14335 阅读 · 0 评论 -
Android重定向,还原短链接为长链接
1 需要添加网络请求权限 2 增加回调,网络请求成功之后才去操作数据public class RedrictActivity extends AppCompatActivity { private String originUrl = "http://t.cn/RBGkaMA"; private interface OnSuccessListener{ ...原创 2018-07-23 18:37:09 · 3517 阅读 · 0 评论 -
Android 获取所有已安装应用程序的包名
//因为我的手机是华为手机所以过滤掉了华为,大家可以按需求过滤public void getAppProcessName(Context context) { //当前应用pid final PackageManager packageManager = getPackageManager(); final Intent mainIntent =...原创 2018-08-08 19:27:43 · 9178 阅读 · 0 评论 -
再学一遍Activity和Fragment生命周期
虽说我们开发用过很多次Fragment和Activity但是我到现在对有些生命周期还是懵逼中,所以这篇博客的目的就是自己写一个测试项目测试下到底生命周期是如何发挥作用的呢?private void initView() { ParamFragment paramFragment = ParamFragment.newInstance(2); getSupportF...原创 2019-05-25 21:27:53 · 366 阅读 · 0 评论 -
从MotionEvent再次理解事件分发机制
很多博客都讲了事件分发机制,这篇博客来测试下点击事件的MotioEvent是如何传递的首先我们的布局比较简单,最外层红色的是ParentView,里面灰绿色的是ChildViewxml布局代码如下:<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas....原创 2019-05-27 20:53:55 · 318 阅读 · 0 评论 -
美团多渠道打包神器——walle
美团新一代渠道包打包神器walle github地址walle取自《机器人总动员》中的瓦力,一个孤独的机器人。由于我之前负责的项目都是属于代码方面,从来没有负责过打渠道包,所以一直不曾使用过这个神器,直到最近项目要接入而我又恰巧负责。在上家公司的时候打渠道包要打14,5个渠道吧,我们一个apk打包的时间将近5分钟,算下来一个多小时的时间都在打包,效率相当低下。我们假设要打20个渠道包,每个...原创 2019-08-13 21:58:10 · 1502 阅读 · 7 评论 -
android动态设置view高度或者宽度
一般的话我们都不需要动态设置view高度的,为什么有这个需求呢?更多是来自UI妹子们,比如下面这张图(图一)UI想让banner底部距离背景高度是固定的,这样的话可以让在各种手机上看起来banner间距很完美,这样的话问题来了背景图是主fragment里面layout的view,banner图是子fragment里面layout的view,两个view完全属于不同的view如何实现间距完全...原创 2019-09-30 10:26:48 · 9643 阅读 · 2 评论 -
动图展示app:layout_scrollFlags的5种滑动属性
在学习这5种滑动属性之前你需要知道的基础知识: CoordinatorLayout,AppBarLayout在刚开始接触CoordinatorLayout的时候我是一脸蒙逼的,心里在想”啥玩意?怎么要记这么多东西呀?”可是真的当我明白每个的用法的时候你会觉得这是多么奇妙啊就跟你刚玩LOL的时候还在纳闷怎么要按那么多键?Q,W,E,R,P,B,D,F,手都忙不过来,但是当你真的熟练的时候你会发现原创 2017-12-27 23:13:08 · 23870 阅读 · 10 评论 -
在onCreate()方法中获取view的width和height
public class LOLActivity extends AppCompatActivity { @BindView(R.id.f) private FlexboxLayout flexboxLayout; private Context context; @Override public void onCreate(Bundle savedInstan原创 2017-12-18 09:28:00 · 247 阅读 · 0 评论 -
Android 中 %s %d %f占位符使用
我们在写布局的时候常常会遇到下面的TextView里面包含人名,游戏名和时间,假如这三个属性是固定死的,那么这个很好写,如果这三个属性是从后台取出来的,而且还有可能随时变化,怎么做?首先你可能会想把“我叫”写成一个tv,把 “贼6”和“不信可以”“一起玩!”再写成三个tv,抛去写布局要求对齐方式这个恶心的地方不说,假如这里面的变量不是三个而是十个二十个,那你得写到吐,所以这个时候就需要占位符登场了1原创 2017-08-13 14:25:26 · 21136 阅读 · 3 评论 -
TabLayout+ViewPager使用
直接上效果图首先看布局<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:orientatio原创 2017-08-19 10:12:16 · 469 阅读 · 0 评论 -
ViewPager+Fragment(二)装修房
上节课我们使用VF(ViewPager+Fragment)搭配使用做出了底部导航栏的效果,既然效果已经出来了为什么还需要写这篇文章呢?1 毛坯房缺点我们在每个Fragment中打上如下的log,然后点击导航菜单栏切换Fragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container原创 2017-08-10 22:02:34 · 400 阅读 · 0 评论 -
ViewPager+Fragment(一)毛坯房
(先放代码,之后再完善文字) MyAdapter类public class MyAdapter extends FragmentStatePagerAdapter { private List<Fragment> list; public MyAdapter(FragmentManager fm,List<Fragment> list) { super(fm);原创 2017-08-08 16:29:00 · 413 阅读 · 0 评论 -
OkHttp3
关于OkHttp这里附上官方API文档和github地址OkHttpOkHttp Github compile ‘com.squareup.okhttp3:okhttp:3.8.1’ //目前Android最新版OkHttp有四大优点:1 HTTP/2 support allows all requests to the same host to share a socket.2 Connec原创 2017-07-19 20:55:15 · 399 阅读 · 0 评论 -
ValueAnimator属性动画
1 官方文档This class provides a simple timing engine(计时器) for running animations which calculate animated values and set them on target objects.There is a single timing pulse that all animations use. It ru原创 2017-07-13 20:01:22 · 436 阅读 · 0 评论 -
属性动画基本用法
ObjectAnimator是ValueAnimator的子类,基本用法参考下面这篇文章:【Android】属性动画(基本用法)转载请说明出处,谢谢该作者的开源精神!原创 2017-07-13 19:44:01 · 479 阅读 · 0 评论 -
AsyncTask从精通到放弃(一)
相信很多小伙伴都对AsyncTask有一定了解,但是网上的理论解释五花八门自己摸不着头脑,怎么办?这个时候一定要记得去看官方API,因为每个人读同一本书的理解还不一样呢,多看看原著自然就有自己的理解AsyncTask官方API1 来看看官方解释 注意AsyncTask其实是一个抽象类,里面有一些常用的抽象方法(后续会讲)AsyncTask enables proper...原创 2017-07-01 18:50:36 · 615 阅读 · 0 评论 -
浅析Android事件传递机制
《浣溪沙》 一向年光有限身,等闲离别易销魂,酒筵歌席莫辞频。 满目山河空念远,落花风雨更伤春,不如怜取眼前人。原创 2017-03-05 13:46:41 · 553 阅读 · 0 评论 -
简单创建Android状态栏通知
通知是您可以在应用的常规 UI 外部向用户显示的消息。当您告知系统发出通知时,它将先以图标的形式显示在通知区域中。用户可以打开抽屉式通知栏查看通知的详细信息。 通知区域和抽屉式通知栏均是由系统控制的区域,用户可以随时查看(下图红色区域为通知区域)(下图红色区域为抽屉式通知栏)下面上代码: NotificationCompat.Builder mBuilder = ne原创 2017-03-20 22:14:32 · 949 阅读 · 0 评论