- 博客(57)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 俄罗斯方块Android版
经典俄罗斯方块Android版缘起界面设计方块片的设计游戏初始化自动下落的处理按钮点击事件的处理可能多个指令同时发送的处理REFRESH_BLOCK_BOARD指令:方块片在左侧界面中显示UP、LEFT、RIGHT指令什么代表相撞,什么代表不相撞DOWN指令的设计消除满行右侧“下一个”方块片的显示PAUSE_RESUME、PAUSE、RESUME指令RESTART指令游戏结束缘起在GitHub...
2019-07-02 12:01:28
1434
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 如何学习插件化
现在的进展见PluginDemo ,现在实现了插件中类、资源、Activity的加载。1、类的加载step1:通过反射把插件dex和宿主dexElements合并成一个新的dex数组,替换宿主之前的dexElements字段;2、资源的加载step2:通过修改过的aapt程序把插件中的资源修id改为不是以0x7f开头的常量(避免与宿主资源冲突);step3:在宿主app中通过反射调用a...
2019-04-07 15:16:16
232
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Groovy读取文件夹目录结构,并生成.sql文件
最近编辑于2019年1月18日最近在读一个讲解flutter基本组件,项目地址https://github.com/alibaba/flutter-go?utm_source=androidweekly.io&utm_medium=website,当然想着一边看一边抄才能有所了解。但是在抄的过程中发现,他主要基于一个数据库文件来展示各个widget之间的组织结构的,那我如果直接把它的a...
2019-01-18 17:54:47
1304
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 支持应用内和插件式的应用换肤框架
最后编辑于2018年9月18日效果图:引入下载SkinChangeDemo,你的项目可以依赖其中的skinchange模块dependencies { compile project(':skinchange')}或者添加远程依赖dependencies { compile 'cn.msz.skinchange:skinchange:0.0.3'}...
2018-09-18 23:29:33
210
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 android项目中常见问题
1、textSize使用sp,同时在BaseActivity中设置sp的缩放比例,使其不会收系统影响而变化大小。在BaseActivity中如下设置: @Override public Resources getResources() { Resources res = super.getResources(); if (Build.VERSI...
2017-10-10 10:21:44
3714
原创 利用GreenDAO生成entity类
编辑于2017年3月24日步骤:1、新建一个Java Library模块:通过路径File->New->New Moudle,然后选中Java Library。2、给lib_dao模块导包。3、编写MyClass类。4、新建对应目录下的entity包。5、修改app模块的build.gradle,编辑android下面的sourceSets,...
2019-07-28 04:25:01
331
原创 react native遇到的一些问题
编辑于2017年8月24日一:A problem occurred evaluating project ':app'.SDK location not found. Define location with sdk.dir in the local.properties file or with an ANDROID_HOME environment variable.这个错误,先检...
2019-07-28 04:23:28
458
翻译 HTML入门
编辑于2018年1月1日算是《HTML5从入门到精通》这本书的读书笔记,四百多页就讲了一点东西。一、HTML基础文件开始标签<html>、文件头部标签<head>、文件标题标签<title>、文件主体标签<body>。二、HTML文件基本标记1、元信息标记<meta>1.1设置页面关键字<meta name=...
2019-07-28 04:22:46
683
翻译 ES6标准入门略读笔记
编辑于2018年1月6日一、let命令1、let声明的变量只在其所在代码块内有效;2、let声明的变量在声明前使用会报错ReferenceError;3、暂时性死区;4、let不允许在相同的作用域内重复声明同一个变量。二、块级作用域1、let外层代码块不受内层代码块的影响;2、使用do表达式使块级作用域中的值能够返回。三、const1、const声明一个只读...
2019-07-28 04:22:03
296
原创 带有进退动画的fragment
编辑于2018年11月22日常常有这样的需求,有几个连续的表格页面需要填写,同时需要在最后一个页面一次性提交,于是我们想到使用fragment,但又要作出类似activity进退动画的效果。先看效果图:这里我使用了一个activity加载多个fragment的方法来实现。MainActivity:import android.support.v4.app.Fragment...
2019-07-28 04:20:27
1518
原创 android studio 能在真机上启动程序,不能在模拟器上启动(模拟器能启动,adb也能识别)
编辑于2016年6月18日虽然好得有点莫名奇妙(这里需要感谢我的QQ群友),不过还是做了一点总结.可能第一步需要检查sdk路径是否正确设置.这时候再运行程序突然又报错,这会儿连真机都不能运行了(之前没报,在真机上是能正常运行的,所以说莫名奇妙)这里的问题的解决方法比较肯定只需要像图中所示,去掉第一个勾就行了.之后,夜神模拟器也能正常运行了(莫名奇妙)...
2019-07-28 04:16:51
984
原创 Android之UI界面--软键盘弹起至登陆按钮下方
编辑于2016年10月13日用户登陆大概是每一个项目最先遇到的需求,但有时UI界面的设计刚好使键盘弹起挡住登陆按钮,这多多少少让用户觉得麻烦。QQ登陆的时候有一个效果,随着键盘的弹起,整个页面向上弹起,使软键盘刚好位于登陆按钮下方,方便了用户在输入账号密码后直接登陆。<?xml version="1.0" encoding="utf-8"?><Linea...
2019-07-28 04:16:10
403
原创 MVP应用架构模式
编辑于2017年3月24日参考:《Android源码设计模式 解析与实战》一书大致分包如下图M:负责获取,存储,检索等操作数据,持有数据对象并直接对其进行操作。V: View Interface:抽取UI及数据展示隐藏等相关操作的方法(可能多个view用到这些方法)。 View:负责绘制、初始化UI;持有Presenter对象,view把与数据相关的业务逻辑都交给P...
2019-07-28 04:15:16
440
转载 Okhttp和Picasso配合使用
编辑于2017年3月24日Okhttp直接使用大神鸿洋的封装,链接http://blog.csdn.net/lmj623565791/article/details/49734867步骤:一,引用okhttp包、鸿洋的okhttputils包,以及即将用到的picasso包。二,配置属于自己的okhttp。public class MyApplication exte...
2019-07-28 04:14:17
441
原创 一个关于invalidateOptionsMenu方法的小问题
编辑于2017年8月14日执行invalidateOptionsMenu()这一句代码后,并不会立即执行onCreateOptionsMenu()方法。所以如何判断已经或者再次创建了menu,然后再执行ActionProvider相关的操作。...
2019-07-28 04:12:57
353
原创 android studio一个编译时的bug
编辑于2017年8月24日Error:A problem occurred configuring project ':app'.> Could not resolve all dependencies for configuration ':app:_debugApkCopy'. > Could not resolve com.umeng.analytics:analy...
2019-07-28 04:12:04
627
原创 retrofit与rxjava搭建的网络框架使用的一个小技巧
编辑于2017年10月16日网络请求中的某个参数是固定的,而这个请求可能会多次用到,很可能某一处修改了而其他其他地方忘记修改。这里我们使用静态常量注解的方式,安卓中不推荐使用枚举。例如:public interface AppService { public static final String TERMINALTYPE = "0"; @StringDef({TE...
2019-07-28 04:09:49
1324
翻译 内存泄漏检测
最近编辑于2017年12月26日LeakCanary确实是一个检测是否存在内存泄漏的好工具(PS:正常的Link检测也可以)。接入方式dependencies { debugCompile 'com.squareup.leakcanary:leakcanary-android:1.5.4' releaseCompile 'com.squareup.leakcanary:...
2019-07-28 04:06:39
135
原创 关于android studio中的模拟器与Android Device Monitor
编辑于2017年09月01日使用android device monitor可以导出一些/data/data下面的文件,但真机需要root后才有权限查看/data/data下的文件,这时我们就考虑到使用模拟器,像genymotion,夜神等一些模拟器其实会比较麻烦。通常还是使用android studio中自带的模拟器吧。这里我出现了android7.0的模拟器从浏览器安装应用提示应用未安装...
2019-07-28 04:05:13
1328
原创 Gradle自动化构建项目
Gradle自动化构建项目Gradle简介Gradle构建文件和创建任务指定构建文件Gradle构建文件的结构Gradle构建过程显式执行指定任务创建Task的常用方法创建Task的常用步骤常见的任务类型Gradle的属性为已有属性指定属性值添加属性通过ext添加属性通过运行gradle命令时-P、-D选项来添加属性增量式构建Gradle插件一些常见插件的配置自定义插件(构建文件)自定义任务类型依...
2019-06-23 02:03:24
577
原创 点击事件埋点
TrackAppClick点击事件自动埋点App模块各种点击事件埋点测试track-api模块TrackAPI用于客户端进行初始化TrackHelper用于gradle plugin调用TrackPrivateAPI一些track-api模块内部调用的apiTrackViewOnClick用于对自定义方法埋点(对xml中的onClick方法注解,使其也能埋点)aspe...
2019-05-06 01:36:34
1312
原创 本地磁盘maven仓库的使用
最后编辑于2019年5月4日以之前插件化的例子PluginDemo做个开场。Step1:在需要制作成库的module的build.gradle中添加apply plugin: 'maven'...uploadArchives { repositories.mavenDeployer { //本地磁盘仓库路径,以放到项目根目录下的 repo 的文件夹为例 ...
2019-05-04 00:48:44
458
原创 不,这只是个名字,一个代号,你可以叫,我也可以叫
最后编辑于2019年4月25日提到事件总线我们总会想到EventBus和Otto,他们之间的区别是:1、Otto可以使用@Produce的方式来发布事件;2、EventBus提供了单例模式;3、EventBus支持threadMode;4、EventBus支持优先级;5、EventBus支持编译时把订阅方法放到集合中等待调用合并成新的集合;6、EventBus支持黏性事件。今天这...
2019-04-25 23:32:04
742
原创 Android内存泄漏以及MVC(P、VM)
内存泄漏的问题,其实就是已经过期的对象仍被引用(非过期对象互相引用),导致已经过期的对象不能被GC自动回收的问题。1、把过期的对象引用作为参数传给了还有生命周期的方法,如线程、计时器需等方法执行完毕才会释放内存;2、非静态内部类引用过期对象,如Handler、AsyncTask需等类对象生命周期结束才会释放内存;3、有生命周期的对象变量引用过期对象,如单例对象持有context,直到程序生命周...
2019-03-20 13:42:36
302
原创 《深入探索Android热修复技术原理》读后感以及插件化思考
最近编辑于2019/02/17主要介绍了阿里Sophix方案。热修复的概念:AndroidManifest出现BUG是无法修复的,想增加四大组件,可通过预先在安装包的AndroidManifest里面埋入代理的组件,在每次新增组件时,通过预埋的代理组件实现与系统进程间的通信。热修复需要在补丁包中包含一个新逻辑的dex文件。资源的修复,主要通过修改资源包的内容。so库修复是通...
2019-02-17 15:31:06
409
原创 Matrial Design(一)
编辑于2017年02月24日Matrial Design材质化设计,是一种拟物扁平化的设计,它既具有拟物化的生动形象,也不乏扁平化的占用资源少的优点。将从以下几个方面开始Matrial Design的探索。今天先进行第一个部分,主题,大致内容如下新建工程新建Material主题Material主题中有一些新的属性android studi...
2019-01-25 16:56:41
453
原创 Matrial Design(二)
编辑于2017年02月25日我将视图和阴影部分分为三个部分:阴影,Palette提取颜色,和图像。介于内容较多,今天先来看看阴影部分。下面直接比较各种效果在5.0以前的版本没有任何效果。下面看看具体不同属性不同设置的区别最后是在代码中进行阴影设置...
2019-01-25 16:56:18
271
原创 Matrial Design(三)
编辑于2017年02月26日这篇简单看一看Palette提取颜色,Tint染色制作新图和矢量图像。整个页面布局的代码及其效果如下:首先要使用palette,需要添加v7下面的一个依赖包。然后就是在代码中获取颜色的操作,这里也很简单。palette提取颜色就完成了。然后看看使用tint生成新的图片,也很简单,bitmap文件下加上tint和tintMode两个属性,就会...
2019-01-25 16:55:53
316
原创 Matrial Design(四)
编辑于2017年04月01日先看一下xmind。一般来说没什么问题,下面展示demo以及效果图。第一个页面 public class MainActivity extends AppCompatActivity { private Context mContext; @Override protected void onCreate(Bundle sa...
2019-01-25 16:55:11
624
原创 自定义共享元素动画(imageView)
编辑于2017年04月02日这个需求看起来非常简单,莫过于第一个页面拿到控件位置、大小信息传送给第二个页面,然后第二个页面再拿到新的控件位置、大小,根据前后位置大小关系,执行相应的位移缩放动画。然而上面的想法就有一个很致命的错误,应该获取的不是控件位置、大小信息,而应该是其中的图片的大小位置信息(如果共享元素是imageView的话)。下面直接上代码(可能只适用于我的案例)。第一个页...
2019-01-25 16:54:26
1331
原创 按键精灵,简单游戏脚本
编辑于2017年09月02日按键精灵主要的几个功能界面如下:左边的界面,可以拉取一些控件,实现可视化交互。附件就是存放脚本所需资源的地方,方便发布后分享给他人。上方比较重要的就是调试,发布和抓抓了。抓抓就是用来抓取点坐标颜色,抓取图片,抓取文字(需另行处理)。界面页面大概是这样的,左边可以选择整体配色,中间窗体,选中的控件可以在右侧看到和编辑它的属性。输入框获取焦点后不知道为啥没有光标...
2019-01-25 16:52:27
9004
4
原创 自定义一个标签式图标
最后编辑于2017年09月22日实现效果如下:public class SignView extends View { private Paint mPaint; private Paint mTextPaint; @ColorInt//这里我添加了design包 private int signColor; private float s...
2019-01-25 16:51:48
283
原创 android studio 导入微信支付demo的一些问题
最后编辑于2017年12月11日1、在模块gradle的android下添加 aaptOptions { cruncherEnabled = false useNewCruncher = false }为了能够使用.9图片等一些资源2、在模块gradle的dependencies下修改dependencies { compi...
2019-01-25 16:48:33
2443
5
转载 Android Studio添加注释模板
最后编辑于2018年10月18日参考: https://jingyan.baidu.com/article/e6c8503c7195b7e54f1a1898.html http://blog.csdn.net/zuiwuyuan/article/details/48201185修改文件注释:File->Setting->Editor->File and Code...
2018-10-18 18:00:10
907
原创 使用layer-list绘制十字形
最近编辑于2018年10月18日效果如下图:xml代码如下:<?xml version="1.0" encoding="utf-8"?><layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <shape androi...
2018-10-18 16:36:37
764
原创 热修复(Tinker的使用)
编辑于2018年9月12日直接开始热修复的话题。热修复是一种插件化的技术,当线上应用出现BUG时,无需发布新包让用户更新,而是通过补丁包让用户更新。具有及时修复BUG,用户无需下载新的应用从而达到无感知修复,提供用户体验的优点。Tinker是一款微信开源的热修复框架,下面就来使用它。第一步配置Tinker第二步,继承DefaultApplitionLike,并通过注...
2018-09-12 14:16:46
1313
3
翻译 App Shortcuts
编辑于2018年9月7日如果您的应用定位到Android 7.1(API级别25)或更高版本,则可以为应用中的特定操作定义快捷方式。 这些快捷方式可以显示在支持的启动器中。 快捷方式可让您的用户快速启动应用程序中的常见或推荐任务。每个快捷方式引用一个或多个意图(intents),当用户选择快捷方式时,每个意图都会在您的应用程序中启动特定操作。你可以通过快捷方式做下面一些事:将用户导航到...
2018-09-07 13:54:56
844
原创 ConstraintLayout&MotionLayout
最近编辑于2018年9月7日ConstraintLayout顾名思义,约束布局———在constraintLayout下的子控件都会受到外来的“力”,从而确定该子控件的位置。一、constraintLayout来自支持库,所以要想使用先要在gradle中引入repositories { google()}dependencies { implementati...
2018-09-07 12:39:48
1199
原创 viewpager中fragment的一些数据设置
最近编辑于2018年8月31日public class FragmentInViewPager extends Fragment { private Object netData; private boolean isCreated = false; @Override public void setUserVisibleHint(boolean isVi...
2018-08-31 14:35:10
173
翻译 SimpleVideoView
最近编辑于2018年8月4日为什么要使用TextureView重写VideoView,因为原先的VideoView在viewpager多个页面都含有VideoView的时候,左右滑动时会导致Surface绘制不及时,会出现下一个SurfaceView显示在上一个SurfaceView的某一帧。这是原项目链接https://github.com/klinker24/Android-Simpl...
2018-08-04 20:44:38
296
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人