- 博客(53)
- 资源 (20)
- 问答 (3)
- 收藏
- 关注

原创 Room升级(三)
数据库升级Room的基本使用Room与LiveData、ViewModel结合使用Migration随着业务的变化,数据库可能也需要做一些调整,比如增加一个新字段,在Room中如何实现?Android为我们提供了一个Migration类对Room进行升级。Migration有两个参数,startVersion和endVersion,一个表示当前版本,一个表示将要升级到的版本。使用方法创建Migration private static final Migration MIGRATI
2021-01-03 18:34:24
995

原创 Room与LiveData、ViewModel结合使用(二)
直接使用Room的劣势Android在UI线程不能执行耗时操作,在工作线程不能刷新UI(别在这抬杠,我知道一些情况下可以)而我们的数据更新变化了自然需要给用户展示出来看,但是数据变化又在工作线程,这就涉及到线程间通信,很不方便。虽然我们有Hander,AsyncTask,runOnUiThread等等很多好用的原生支持,甚至还有很多第三方库,但这些目前看来都不是最优解。解决方案在以往我们数据发生变化时都需要再去在工作线程中查询一遍数据然后把数据再给到UI线程去刷新,但是现在我们希望数据发生变化时,
2021-01-03 13:38:39
2170

原创 Room的基本使用(一)
Room来源Android采用Sqlite作为数据库存储。由于Sqlite代码写起来繁琐且容易出错,因此,开源社区逐渐出现了各种ORM(Object Relational Mapping)库。常见的有ORMLite, GreenDAO等。Google也意识到推出自家ORM库的必要性,于是有了Room,Room同其他ORM库一样,也是在Sqlite上提供了一层封装。Room相关概念概念Entity:一个Entity对应数据库中的一张表。Entity类是Sqlite表结构对Java类的映射,在Jav
2020-12-29 22:52:57
4375

原创 Android学习资源
极客导航:https://www.jikedaohang.com/Android/Android开发技术周报:https://www.androidweekly.cn/Android开发网:http://www.jizhuomi.com/android/开源中国:https://www.oschina.net/玩Android:https://wanandroid.com/Androi...
2019-11-20 10:06:08
234

原创 Flutter学习资源
Flutter社区中文资源:https://flutter.cnFlutter中文网:https://flutterchina.club/Dart编程语言:http://www.dartdoc.cn/Flutter实战:https://book.flutterchina.club/Flutter自定义Widget:http://flutter.link/...
2019-11-20 10:02:47
255

原创 压箱底的Android UI开源库(二)
1.图片、视频和文档选择库https://github.com/lovetuzitong/MultiImageSelectorhttps://github.com/bingoogolapple/BGAPhotoPicker-Androidhttps://github.com/crazycodeboy/TakePhotohttps://github.com/FinalTeam/RxGalle...
2019-06-04 17:13:51
274

原创 自定义CircleProgressView
背景在网上看到一个效果,虽然很简单,但是做的很漂亮我很喜欢,正好在学习自定义View,于是拿来练练手。来看下效果,直接用的人家的效果图,后面给出连接,不过我做的是个简化版的,毕竟是拿来练手的。分析View中的元素背景圆进度条弧线进度条头部的圆中间的进度文字实现画一个空心的背景圆,需要圆心坐标、半径和宽度,这个很简单;绘制进度,需要计算出弧的圆心角度数、起始点、宽度(不能小...
2018-09-25 20:36:59
842
原创 统计代码行数
4、$name中的name换成git本地配置的name,第一个name不用换。1、在本地项目的目录中找到.git文件夹;2、打开git bash命令行窗口;
2023-12-19 10:27:59
291
原创 Android App因配置https信任所有证书导致Glide加载不出https图片的解决办法
Android App中因使用自定义https证书导致Glide加载不出https资源图片的解决办法。
2022-06-09 13:55:12
910
原创 安装 Vue CLI 报错
报错npm install -g @vue/clinpm ERR! code ERR_TLS_CERT_ALTNAME_INVALIDnpm ERR! errno ERR_TLS_CERT_ALTNAME_INVALIDnpm ERR! request to https://registry.cnpmjs.org/@vue%2fcli failed, reason: Hostname/IP does not match certificate's altnames: Host: registry.c
2021-04-14 23:54:42
1154
原创 04单例模式
单例模式(Singleton Pattern)确保一个类只有一个实例,并提供全局访问点。使用场景需要确保程序中的某个类只有一个实例时,就采用单例模式;利用延迟实例化的方式创建单例,对资源敏感的对象特别重要。要点确保程序中一个类最多只有一个实例;单例模式也提供访问这个实例的全局点;在Java中实现单例模式需要私有的构造器,一个静态方法和一个静态变量。经典的单例模式public class Singleton { private static Singleton singlet
2020-11-19 23:27:07
149
4
原创 03装饰者模式
装饰者(Decorator Pattern)模式动态地将责任附加到对象上,若要扩展功能,装饰者提供了比继承更有弹性的替代方案。被装饰类(饮料)public abstract class Beverage { String description = "Unknown Beverage"; public String getDescription() { return description; } //必须在子类实现 public abstra
2020-11-10 00:34:01
104
原创 02观察者模式
观察者模式(Observer Pattern)定义定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它所有依赖者都会收到通知并自动更新。建立可观察者接口public interface Subject { //持有观察者对象,因为Observer被观察者实现,所以可以通知update到观察者信息 public void registerObserver(Observer observer); public void removeObserver(Observer
2020-11-10 00:33:09
110
原创 01策略模式
策略模式(strategy pattern)定义定义了算法族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。分开变化和不会变化的部分Duck类内的fly()和quack()行为会随着鸭子的不同而改变,属于变化的部分,将它们从Duck中抽取出来,建立一组新类代表每一种行为。设计鸭子的行为以往:行为来自于继承Duck超类的具体实现,或是继承某个接口后由子类自行实现而来。这两种方法都依赖于实现,没办法改变行为。现在:Duck的子类将使用接口(FlyBehavio
2020-11-10 00:30:22
185
2
原创 Android四大组件-Service
服务Service概念实现程序后台运行的解决方案,适合执行不需要和用户交互的长期运行的任务;服务并不运行在单独的进程中,依赖于创建服务时所在的进程;服务不会自动开启线程,任务默认运行在主线程。定义一个服务继承Service;重写onCreate,onStartCommand,onDestroy方法;清单文件注册。启动和关闭服务启动Intent startIntent = new Intent(this, MyService.class);startSestarvice(s
2020-08-08 23:40:20
195
原创 unsupported modules detected Compilation*****Gradle Java modules and Android-Gradle modules in one p
unsupported modules detected Compilation is not supported for following modules: app. Unfortunately you can’t have non-Gradle Java modules and Android-Gradle modules in one project解决方案:关掉Android Stu...
2019-11-21 09:19:57
291
原创 EventQueue.isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide
记录一下这个错误EventQueue.isDispatchThread()=false Toolkit.getEventQueue()=com.intellij.ide,今天正在写Android代码,创建一个新类的时候电脑卡着了,无奈只能强制重启了。重启之后原本好好的IDE出现了这个错误,通过以下方法解决的。大家遇到这个问题可以试一下这个方案。File->Project Structure...
2019-10-15 08:49:35
7460
4
原创 Android 9.0设备http请求报java.net.UnknownServiceException: CLEARTEXT communication to
报错起因新建项目时targetSdkVersion = 28,28对应的是Android 9.0,在此版本中强制使用https,所以当使用http协议运行在9.0手机上时就会报java.net.UnknownServiceException: CLEARTEXT communication to错误,拿不到后台数据。解决方案修改targetSdkVersion版本小于28;只运行在And...
2019-08-29 19:06:12
579
原创 Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versi
问题:Error:Execution failed for task ':app:preDebugAndroidTestBuild'.> Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and t...
2018-12-26 16:14:57
300
原创 读取Excel的数据
记录一下读取Excel表格里面的内容xls版本的代码,所使用的jar包以及读取xlsx的jar包都在下面给出:public static void main(String[] args) throws FileNotFoundException, IOException { POIFSFileSystem pfs = new POIFSFileSystem(new FileInput...
2018-12-01 15:11:09
224
原创 Android隐藏标题栏
继承自Activity时在setContentView之前调用requestWindowFeature(Window.FEATURE_NO_TITLE);继承自AppCompatActivity在setContentView之前调用下面任一方法:getSupportActionBar().hide();supportRequestWindowFeature(Window.FEATURE_...
2018-09-29 16:55:42
260
原创 Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved vers
经常在新建项目或者导入别人项目种遇到这个问题,真是烦死大爷了,记录一下。Error:FAILURE: Build failed with an exception.* What went wrong:Execution failed for task ':app:preDebugAndroidTestBuild'.> Conflict with dependency 'com.an...
2018-09-25 20:33:56
344
原创 Android使用RecyclerView实现时间轴,物流进度展示
前言今天在网上看到一篇文章中有个时间轴图片,很是符合我的审美,在能表现出要表达给用户的信息外,极尽简约,很漂亮,打算实现一下。好吧,文章https://www.jianshu.com/p/d03f994b6c44已经给出了实现方式,再copy一遍?No,换一种思路吧。 我的效果1.只有1条发货数据2.多于2条数据右边的实现右边的实际就是一个普通的不...
2018-08-16 15:27:00
7085
1
原创 使用字体库和TextView代替ImageView展示图片
新来的同事介绍了一项之前没用过的技术,使用字体库和TextView代替ImageView展示图片,虽然在项目中尝试了一段时间后我又给去掉了,但是觉得这个技术还是不错的。现在记录一下最最基本的用法,如果想在项目中使用,建议先看下亓斌这篇博客。一般情况下我们展示图片在xml布局中都是用ImageView设置src来展示,比如:<ImageView android:layout_width="10
2017-09-27 23:22:57
679
原创 Retrofit+RxJava上传图片
在做一个商城,第一个版本使用的OkHttp3来进行网络操作的,现在把第一个版本推倒重新做了个版本,于是就用上了正在如火如荼的Retrofit+RxJava来实现网络操作。在上传图片作为头像时实现了一个上午也没搞定(无奈,英语差,看文档吃力啊),现在终于有时间再重新搞一下了。于是把使用OkHttp3上传和Retrofit+RxJava上传都总结了一下。废话不多说,直接贴代码,只要把代码赋值到你的项目中
2017-09-26 15:45:51
7348
原创 Android异步消息处理机制学习笔记
(一)Handler什么是HandlerAndroid消息机制的上层接口,Handler通过发送和处理Message和Runnable对象来关联相对应线程的MessageQueeu.可以让对应的Message和Runable在未来的某个时间点进行相应处理;让自己想要处理的耗时操作放在子线程,让更新UI的操作放在主线程。Handler的使用方法post(runnable):实际也是调用sen
2017-08-22 00:21:18
543
原创 Android开发中常用小方法
1:是不是经常有小伙伴在Activity的onCreate()方法中获取View的尺寸,结果通通为0,没错,此时就没有办法了吗?NO,下面这种方法就可以帮你简单的解决这些问题。 int width = View.MeasureSpec.makeMeasureSpec(0, View.MeasureSpec.UNSPECIFIED); int height = View.MeasureSpec.m
2017-08-19 23:16:53
284
原创 WebView常见的坑与内存泄漏问题
WebView常见的一些坑Android API 16及之前版本存在远程代码执行安全漏洞,该漏洞言语程序没有正确限制使用WebView.addJavaScriptInterface方法,远程攻击者可使用java反射api利用该漏洞执行任意java对象的方法;WebView在布局文件中的使用:WebView动态添加在其他容器中时,在onDestroy中销毁防止内存泄漏;jsBrige:js与na
2017-08-17 23:28:09
1499
原创 自定义带清除功能的EditText
背景今天上班忘了带手机数据线,但是又嫌模拟器用着不爽,于是就“罢工”一天,但是啥也不干觉着对不起自己吃的饭不是,于是就想着做个功能简单的带清除功能的EditText吧。说干就干,上效果图。思路:使用EditText自带的DrawableRight属性来设置删除图片;判断点击位置在右侧的图片范围时重置EditText的内容;使用TextWatcher观察EdiText没有text内容的时候隐藏删
2017-07-23 15:10:41
675
原创 TextView设置drawableLeft,drawableRight,drawableTop和drawableBottom
需求:效果图需求分析:看到这样的需求,我们一般有3种解决方案: - 左边放一个ImageView右边紧跟着一个TextView; - 放一个TextView通过SpannableString类来帮助处理,我想也是可以做到的 - 放一个TextView,通过drawableLeft/Right/Top/Bottom来处理。 经过考量,第一种方案太low,第二种方案适合处理更复杂的文本,比
2017-07-21 15:12:10
1065
原创 内存泄漏常见代码片段
背景:程序的运行离不开内存,尽管硬件技术的发展也让手机的内存不断增大(比如我的OPPO R7s是256M),但是不恰当的编程习惯仍然会导致内存泄漏的发生,这将是一场灾难,所以我们让然应该去避免。内存泄漏与内存溢出的关系:内存泄漏为内存溢出埋下隐忧,因为内存泄漏的实质就是需要释放的内存被生命周期长的对象继续持有导致得不到释放,系统无法重新分配这些内存,随着软件的使用内存资源越来越少,导致内存不够,出现
2017-07-16 15:16:12
1938
原创 ButterKnife中如何绑定头View和脚View
今天遇到了一个问题,给ListView添加HeaderView之后,如何通过ButterKnife绑定HeaderView(FooterView)这个问题,记录一下。下面这个代码片段大家应该都很熟悉:@BindView(R.id.lv) ListView lv; @Override protected void onCreate(Bundle savedInstanceStat
2017-07-12 13:30:45
4323
原创 Android开发中常用命令
1.Android Studio开发环境下强制上传项目到码云,同时也可解决Push rejected: Push to origin/master was rejected问题。git push -f origin master
2017-07-09 16:09:48
442
原创 Android透明状态栏实践
Android状态栏透明效果:弹出导航栏的效果: 隐藏导航栏的效果: 上一篇:状态栏着色代码实现准备工作:在values/style中添加自定义主题样式: <!--自定义主题--> <style name="ImageTranslucentTheme" parent="Base.Theme.AppCompat.Light.DarkActionBar"> </style>在value
2017-07-04 13:59:04
394
原创 Android着色状态栏实践
着色状态栏效果图:下一篇:状态栏透明导航栏弹出来的:导航栏隐藏着的:有效运行环境:OPPO R7s(5.1)和红米note3(6.0),其它机型未测试:代码实现:在colors中定义需要用到的颜色: <!--自定义颜色 --><color name="translent_green">#2EC37D</color><color name="translent_red">#ff0000</colo
2017-07-03 17:09:48
325
原创 EventBus初体验(二)
背景:上一篇EventBus初探遇到一个问题就是在 startActivity(intent);之后立即发送EventBus.getDefault().post(new MessageEvent(“我是EventBus发送到消息”));这个消息,下个界面时无法接收到消息的,当时心里一万只cnm在翻腾,这nm用起来有多少场景不能用。后来才知道EventBus是有粘性事件的,对,你没有看错,是粘性事件,
2017-06-12 12:41:33
429
原创 EventBus初体验
背景:昨天看了启舰大神的关于EventBus的文章,很久以前的东西我居然没使用,今天学习一下。 何为EventBus(https://github.com/greenrobot/EventBus)官方如是说:EventBus is a publish/subscribe event bus optimized for Android.EventBus是针对Android优化的发布/订阅事件总线。值
2017-06-06 18:21:24
322
原创 String为什么要设计成final
前言:今天突然看到一个问题为什么String类型设计为final,之前没深入想过这个问题,现在来看看。源码中对String为什么设计成final的解释:Strings are constant; their values cannot be changed after they are created. String buffers support mutable strings. Because
2017-06-04 12:48:32
9425
5
eclipse-inst-win64.exe
2020-01-05
gradle-2.2-all
2017-09-17
gradle-2.2.1-all.zip
2017-09-17
gradle-2.1-all
2017-09-06
gradle-2.0-all
2017-09-05
Android启动邮箱Email App崩溃
2020-05-27
Glide依赖报错
2018-05-12
RecyclerView smoothScrollToPosition
2018-04-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人