自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

lzf_acraftsman的博客

管住你的嘴,小鬼

  • 博客(13)
  • 资源 (1)
  • 收藏
  • 关注

原创 Flutter 小技巧实现通用的局部刷新

前言在使用GlobalKey局部刷新方式中介绍了如何通过GlobalKey实现局部刷新优化性能,只是每次我们进行局部刷新的时候 都需要定义widget、定义state、实现build方法等。教程还是不错的,简单易懂,但是在实际使用过程中就不免有些许麻烦。今天我们通过一个小技巧来实现一个通用的局部刷新Widget实现思路当widget需要进行刷新时,我们可以通过调用widget的setState方法来实现,setState随后会调用State的build方法来进行重建 //请求刷新 setSta

2020-09-28 17:02:19 621

原创 完美解决DialogFragment Can not perform this action after onSaveInstanceState 问题

完美解决DialogFragment Can not perform this action after onSaveInstanceState 问题问题解析参考一下掘金一位大佬的解释让你不再俱怕 Fragment State Loss简单的来说,就是dialogFragment所依赖的Fragment/FragmentActivity,在***onSaveInstance***之后,会调用dialogFragment的saveAllState,使得fragmennt的成员变量mStateSaved

2020-09-27 17:08:15 6197

原创 适配器模式

废话一下上一篇我们说到装饰者模式,通过 装饰者模式我们可以增强/消弱类的功能或做一些额外的处理。如果我想直接修改类的实现呢?(装饰者模式只是添加额外的处理,原实现仍然保留),今天我们来看一下适配器模式适配器模式1、定义:将一个类的接口变换成客户端所期待的另外一种接口,从而使原本因进口不兼容而无妨一起工作的两个类能够在一起工作怎么来理解它呢?就是说,我想把一个类的实现转化成另外一个类。举个例子,现在有

2017-08-04 14:07:53 233

原创 装饰者模式

废话一下上一篇我们说到代理模式,通过 代理模式来实现对实际执行类的保护。如果实际执行类不能满足我们的需求怎么办呢?我需要做一些额外的处理。今天来看看装饰者模式是如何来实现的,同是我们来对比下代理模式和装饰者模式的区别装饰者模式1、定义:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰者模式相比生成子类更为灵活怎么来理解它呢?举个例子吧,就上篇的代理模式来举例,我想在加载图片前后添加一些额外的

2017-08-04 14:06:39 172

原创 代理模式

废话一下上一篇我们说到策略模式,通过策略模式我们来实现动态切换算法 在策略模式中,策略管理类的实现在一定程度上与代理模式相似,我们今天来看看他们之间的区别(注:这里的代理模式指的是静态代理) 策略模式链接代理模式1、定义:为其他对象提供一种代理以控制对这个对象的访问怎么来理解它呢?举个例子吧,这里就改一下上一篇的例子,我要实现图片加载,我想用Glide,但是glide呢不想让我访问 ,它说你

2017-08-04 14:04:02 210

原创 策略模式

废话一下看设计模式已经很久了,感觉自己也多少有些体会,这次我将从代码的角度去分析设计模式,将自己的一些理解记录分享一下。我将从策略模式出发,一步步将代码演化成其他设计模式,这将是一个比较有趣的过程,希望能够对读者有所帮助。废话少说,我们直接进入正题策略模式1、定义:定义一组算法,将每个算法都封装起来,并且使他们之间可以互换怎么来理解它呢?就是说我要去完成一件事,有多种方式、途径,那么我把每种方式都封

2017-08-04 14:03:28 305

原创 apt-注解开发-4-使用

public class MainActivity extends AppCompatActivity { @LzfBindView(R.id.myText) TextView myTextView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreat

2017-05-25 14:28:01 226

原创 apt-注解开发-3-自定义processor

自定义processor[0]创建一个java module 命名为apt 在gradle中引入apply plugin: 'java'dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.google.auto.service:auto-service:1.0-rc2'

2017-05-25 14:25:12 241

原创 apt-注解开发-2-定义操作api

定义操作api[1]创建一个androidModule[2]定义findView的接口(多种findView所以做成接口 方便扩展)命名为ViewFinder[3]写一个activity的findview的实现类 命名为ActivityViewFinder[4]定义一个bindView接口(用于绑定view和解绑view)[5]写一个bindView的实现类[6]注意该module的gr

2017-05-25 14:23:36 234

原创 apt 注解开发-1-定义注解

定义注解参考资料http://www.jianshu.com/p/8d4cdb37e8f6[1]file->new module->选择java module 这里命名为annotation(随意)[2]src->new-> java class ->选择@Annotation 这里命名为LzfBindView[3]定义注解的示例 <!-- @Target说明了Annotat

2017-05-25 14:20:46 202

原创 plugin “XXX”is incompatible with this installation

概况在用intelliJ进行编写插件时,插件构建之后在android studio中无法安装该插件 plugin “XXX”is incompatible with this installation这是由于idea-version不支持产生的 我们只需修改这个值就可以解决了这里是stackoverflow上的一个回答plugin这里是官网的idea-version表 官网idea-version

2017-04-18 19:53:05 1238

原创 gradle 动态配置manifest

gradle 动态配置manifest在app开发过程中,我们难免会遇到一些三方sdk,他们都有着各自的key,每次打包时都要去更换这些key的正式环境和测试环境,小手一抖搞不好就换错了(万一忘了呢0.0),这里就是叫你如何通过配置,用最少的改动完成环境的切换manifest中key的配置 <meta-data android:name="UMENG_APPKEY"

2017-03-30 14:15:51 1516

原创 android 拖拽效果(图文)

第一次写博客 心里有点怂怂的,大家见谅。文章尽量以最简单的方式来进行描述,如有错误敬请指出

2016-11-21 16:07:44 447

DragAndEditView

通过手势可以对view进行旋转缩放,拖拽移动,不局限于某种控件,支持所有view

2016-11-25

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除