- 博客(190)
- 资源 (4)
- 收藏
- 关注
原创 Flutter -- 开发 Gank 客户端
各个版本的Gank客户端:Android 版本快应用版本Flutter 版本概述接触 Flutter,照例,撸一个 Gank 客户端来练习。每日分享技术干货和妹子图,还有供大家中午休息的休闲视频、美女图片,另外还实现了推荐干货功能。数据来源 Gank项目源码 Github应用展示用到的第三方库名称功能dio网络请求框架json_ann...
2019-08-20 11:00:04 543
原创 Gradle 使用指南 -- Plugin DSL 扩展
我的博客原文地址概述前面的博客Gradle 使用指南 – 创建Plugin 介绍了如何去创建一个插件,那么这篇文章将介绍一些深入的知识:如何对自定义插件进行 DSL 扩展。 在博客Gradle 使用指南 – Android DSL 扩展 Android 插件对 Gradle 进行的 DSL 扩展,那么我们自定义插件也是完全可以做到的。DSL 扩展基本实现我们在进行 Gra
2018-01-16 09:31:23 2611 2
原创 Gradle 使用指南 -- Android DSL 扩展
我的博客原文地址概述在前面博客Gradle 使用指南 – 基础配置 中介绍了一些 Gradle 配置的基本命令,其中有一个名称为 android的函数不知道有没有引起大家的注意:android { compileSdkVersion 23 buildToolsVersion "23.0.1" defaultConfig { ......
2018-01-16 09:28:45 1883
原创 使用 TaskDescription 定制任务管理器 Title
概述最近有个需求,就是要代码动态修改 APP 在任务管理器中名称显示,不要问我问什么有这样的需求,因为需求就这样。哈哈…… 对于如何控制 APP 在任务管理器中的 Title,我们可能知道,可以通过在 AndroidManifest.xml 中设置 application 或者主 activity 的 android:label 来实现,而且 activity 的优先级高于 application
2017-10-18 18:42:33 3710 1
原创 WebApp 和 NativeApp 的世纪之战
概述自从Android系统在手机上应用开始,在移动端 Native App 和 Web App之间的战争似乎就没有停止过,Web App 及其各种变体向Native App 发起了无数次的冲锋,但Native App的地位仍然是岿然不动,甚至我们一提起移动互联网,就专指 Native App。这和 PC 端的景象完全不一样。随着轻应用、Hybrid App 、React Native、Weex已经微
2017-10-10 18:54:13 1114
原创 Gradle 使用指南 -- Gradle Task
概述Gradle 官方文档 Gradle User Guide 中文版Gradle 中的每一个 Project 都是由一个或者多个 Task 来构成的,它是 gradle 构建脚本的最小运行单元,一个 Task 代表一些更加细化的构建,可能是编译一些 classes、创建一个 Jar、生成 javadoc、或者生成某个目录的压缩文件。Task 相关命令./gradlew tasks:列出当前工程
2017-08-29 19:28:31 2163
原创 Gradle 使用指南 -- 创建Plugin
概述Gradle 的插件可以有三种形式来提供:直接在build.gradle中编写Plugin,这种方式这种方法写的Plugin无法被其他 build.gradle 文件引用。单独的一个Module,这个Module的名称必须为buildSrc,同一个工程中所有的构建文件够可以引用这个插件,但是不能被其他工程引用。在一个项目中自定义插件,然后上传到远端maven库等,其他工程通过添加依赖,引用
2017-08-21 16:21:11 1360
原创 Markdown 绘制 UML 图 -- PlantUML + Gravizo
我的博客原文地址我们在工作中会经常使用UML图,实现UML的工具有很多,首先是绘图软件,但是所有的绘图软件有这样一个问题:这些软件绘制成的图片无法进行版本控制。也就是说如果后面你想修改软件的话,如果在软件里面的原图没有保存的话,就要重新再画了。这对于我们习惯于版本控制的码农来说显然是无法忍受的。 那么下面介绍一种可以在Markdown中使用的绘制UML工具 —— PlantUML,以及渲染引擎 G
2017-08-10 14:40:37 27856
原创 J2V8 -- 注册 Java 回调函数
我的博客原文地址 本文译自Registering Java Callbacks with J2V8,并加入了自己的一些理解。使用 J2V8 时是可以使用 JavaScript 来调用 Java 的方法的,下面就介绍一些如何注册 Java 的回调函数来供 JavaScript 调用。回调函数在 JavaScript 中,函数也即是对象,可以被操作也可以被传递。在使用 J2V8 时,任何的 JavaS
2017-08-07 12:48:02 3110
原创 J2V8 -- 开始使用J2V8
我的博客原文地址本文译自Getting Started With J2V8,并加入了自己的一些理解。概述J2V8 是对 Google 的目前非常流行的 JavaScript 引擎 V8 的 Java 封装,J2V8 的开发使 Android 高效执行 JavaScript 带来了可能。Tabris.js 就是基于 J2V8 开发的一款移动端 App。J2V8 可以运行在 Windows,Linux
2017-08-07 12:44:20 14691
原创 Android:使用JitPack发布Github开源库
JitPack 是一个发布流程非常简单的自定义的 Maven 仓库,可以用来发布自己的 JVM 或者 Android 开源库。 JitPack 的官方文档在这里 Publish an Android library。 参考我的Github上面一个开源项目。 下面来介绍一下使用JitPack发布一个开源项目的步骤。GitHub准备代码准备首先将需要发布的library工程准备好。 打开根目录的
2017-07-24 10:14:24 1453
原创 Android 性能优化之MAT分析内存泄漏
MAT 是 Memory Analyzer Tool 的简称,它是一款强大的内存分析工具,使用它能帮助开发者快速分析内存泄漏以及优化内存的使用。 内存泄漏也是我们开发过程中经常碰到的问题,掌握了MAT工具,那么你就不会惧怕内存泄漏,使用它可以让内存泄漏无所遁形。MAT下载进入网址下载MAT工具,如果你使用 Eclipse 开发工具而且已经集成了插件,可以不用下载了。场景准备我们用下面的代码产生一个
2017-06-27 11:32:16 1342
原创 Android:关于Drawable的缓存机制应该了解的知识
问题演示下面我们通过一个实例来演示一个我们在使用Drawable过程中经常会遇到的一个问题。首先贴出UI布局文件,这里放了两个 ImageView,它们的寬高不一样,而且对他们加以蓝色的背景。<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:mz="http://s
2017-06-15 13:05:10 3698
原创 Android 性能优化之旋转屏幕优化
我的博客原文地址问题背景在桌面转屏发现响应不够迅速,对比其他产品有很大的提升空间,针对此问题进行了一些分析和优化。问题分析和解决方法首先简单介绍一下旋转屏幕的流程,首先各个界面要进行重绘,在重绘过程中要进行冻屏,只有所有Window都进行绘制完成了才进行转屏,因此这里面就有个木桶效应,转屏的时间取决于重绘最慢的那个。 首先分析Log,找出可以优化的点:adb shell dumpsys windo
2017-05-02 17:52:26 7319 3
原创 Android 性能优化之TraceView的使用
我的博客原文地址TraceView简介工欲善其事,必先利其器。要想分析Android的性能问题,比如卡顿了之类的,那么就必需掌握TraceView工具的使用。 TraceView 是 Android SDK 中内置的一个工具,它可以加载 trace 文件,用图形的形式展示代码的执行时间、次数及调用栈,便于我们分析,以此来优化 App 运行效率。生成trace文件在进行分析以前,必需要生成trace
2017-04-25 19:48:36 1928
原创 Android应用调试常用知识(2)
使用Android Studio来查看依赖列表有时候我们应用在编译的时候会遇到类似的问题:Error:Error converting bytecode to dex:Cause: com.android.dex.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/Accessibilit
2017-04-10 10:54:38 1549
原创 Android实用技巧之adb命令:getprop,setprop,watchprops命令的使用
我的博客原文地址getpropgetprop简介getprop命令的作用就是从系统的各种配置文件中读取一些设备的信息。这些文件在我们的手机设备中是可以找到的:init.rcdefault.prop/system/build.prop查询所有的配置输入命令:adb shell getprop就会列出所有的配置信息:[aricent_ims_op_status]: [1][aricent_ims_
2017-04-06 19:31:33 73460
原创 Android Studio 导入 Android 源码
我的博客原文地址 Android 的源码代码量是非常大的,也有多种代码编辑器来供我们选择来去阅读Android源码,本文将介绍如何将 Android 源码导入到 Android Studio 中来的技巧。 导入源码修改Android Studio的配置文件由于导入源码时需要消耗大量内存,所以建议修改一studio64.vmoptions文件:-Xms1024m-Xmx1024m生成导入到And
2017-03-15 19:40:58 22624 1
原创 程序员学习资料汇总
我的博客原文地址前言资料篇技术网站开发社区Android开发网站开发IT业界资讯源码网站学习网站技术博客技术团队博客CSDN博客个人主页微信公众号技术类其他开源项目关于开源项目的网站知名互联网企业开源项目AndroidJavaJava SDK人工智能VR/AR其他资料汇总学习资料GitBook必读书籍Andro...
2017-03-14 17:43:14 5386
原创 开源项目- Lottie 源码分析
我的博客原文地址 Lottie的基本用法其实还是非常简单的,不熟悉的同学请阅读我的博客开源项目-Lottie简介。接下来我们就从源码角度分析一下这么强大的功能是怎么实现的。 实现思路Lottie使用json文件来作为动画数据源,然后把解析这些数据源出来,建立数据到对象的映射关系,根据里面的数据建立合适的Drawable绘制到View上面。源码分析下面我们就从LottieAnimationView
2017-03-07 17:22:11 4899
原创 React Native封装原生UI组件
我的博客原文地址 在React Native开发过程中,有时我们想要使用原生的一个UI组件或者是JS比较难以实现的动画效果时,我们可以在React Naitve应用程序中封装和植入已有的原生组件。 比如开源项目Lottie在Android上能够非常简单的实现一些复杂的动画效果,如果我们想在JS中也实现这样的效果呢?很简单,我们可以自己构建一个原生UI组件。 接下来就以此为例来进行介绍。Lo
2017-03-03 16:11:58 5067 7
原创 React Native创建原生模块
在React Native开发过程中,有时候我们可能需要访问平台的API,但React Native还没有相应的实现,或者是React Native还不支持一些原生的属性,我们需要调用原生代码来实现,或者是我们需要复用一些原来的Java代码,这个时候我们就需要创建一个原生模块来自己实现对我们需要功能的封装。 可以参考官方文档或中文文档。开发模块实现模块下面我们就通过实现一个自定义模块,来熟悉编
2017-03-01 09:29:57 2020
原创 Android项目中集成React Native
React Native是非常强大的,但有的时候我们可能并不需要从0开始去开发一个React Native应用,而是需要把它集成到我们现有的Android工程中去,去添加单个的React Native View。本章将主要介绍在原生Android中集成React Native。 可以参考官方文档或中文文档。创建Android工程新建一个ReactNativeDemo的Android工程作为已有
2017-02-27 14:29:27 3395 1
原创 Android 多CPU架构支持所需要了解的知识
前言Android系统目前支持以下七种不同的CPU架构:ARMv5,ARMv7 (从2010年起),x86 (从2011年起),MIPS (从2012年起),ARMv8,MIPS64和x86_64 (从2014年起),每一种都关联着一个相应的ABI。ABI是指应用基于哪种指令集来进行编译。 如果项目中使用到了NDK,它将会生成.so文件,Android应用支持的ABI取决于APK中位于lib/AB
2017-02-24 10:08:31 3058
原创 编译weex_v8core
Ubuntu版本:14.04下载源码源码地址git clone https://github.com/alibaba/weex_v8core.git编译下载NDK下载地址,这里用的是android-ndk-r11c,用android-ndk-r13b会编译不过。配置环境变量修改.bashrc文件,加上:export PATH=/******/android-ndk-r11c:$PATH编译cd we
2017-02-21 17:12:30 2231
原创 使用CrashHandler来获取应用的oom crash信息
Android应用开发中不可避免地会发生崩溃,特别是在用户使用过程中,一些特定场景的偶然概率的crash会通常让开发者抓狂。幸运的是Android提供了处理这类问题的方法,当App Crash时,我们可以记录下Crash的原因或者是一些设备信息,并上传到服务器供开发者分析,以便开发者迅速定位问题原因。 实现这个功能我们需要实现Thread.UncaughtExceptionHandler这个接口。
2017-02-21 11:17:51 1566
原创 Ubuntu环境下编译V8
Ubuntu版本:14.04关于V8V8是Google自己开发的高性能开源的JavaScript解析引擎。 - V8在Github上面的地址 - V8开发者页面下载源码源码地址 根据文档中的介绍,首先看depot tools是否安装。 然后下载v8源码:fetch v8然后进行同步:git pull origingclient sync根据这个网站的提示,运行下面脚本来安装一些编译an
2017-02-17 17:00:45 6833 2
原创 Android应用开发常用知识-ActionBar相关(5)
Android 5.0 消除ActionBar下面的阴影在Android 5.0上你会发现ActionBar下面默认会出现一条阴影,如下设置可以消除阴影:getActionBar().setElevation(0);设置显示后退按钮:actionBar.setDisplayHomeAsUpEnabled(true)显示标题:actionBar.setDisplayShowTitleEnabled
2017-02-15 16:56:17 892
原创 使用LayoutInflater应该注意的问题
我们通常使用addView这个方法时,会先通过LayoutInflater的inflate生成一个View视图,然后添加到当前ViewGroup中,如果使用不恰当,就会出现这样的问题: setContentView(R.layout.layout_inflate_test); LinearLayout viewGroup = (LinearLayout) findVie
2017-02-15 09:56:51 724
原创 Hexo--Next主题优化
欢迎访问我的博客 按照上篇博客中更换Theme的方法,我们已经将主题改为Next,但是还是有地方我们可以优化和配置的。 一些常见的配置方法参考文档即可。语言设置将languages目录下面的zh-Hans.yml修改为zh-CN.yml或者按照文档中的修改根目录配置文件也行。修改样式网站标题栏背景颜色网站标题栏背景颜色是黑色的,感觉不好看,可以在source/css/_schemes/Pisce
2017-02-04 14:56:15 10867 1
原创 Hexo博客配置优化
欢迎访问我的博客Hexo优化创建hexo分支为了实现能在更换环境(比如更换电脑)的情况下我们仍然能发布博客,我们创建一个hexo分支用来存放hexo的文件。$ git checkout --orphan hexo$ git rm -rf .$ git add . -A$ git push origin hexo这样就用hexo分支来存放网站的原始文件,master分支用来存放生成的静态网页。添
2017-02-04 14:54:30 3398
原创 Hexo+GitHub搭建个人博客
本地环境搭建安装git安装node.js去官网下载node-v5.0.0-linux-x64解压即可配置Github建立Repository首先在github上面建一个仓库username.github.io域名配置首先要购买一个域名,然后进入域名解析页面,添加一个CNAME记录,指向username.github.io即可。配置好一般等待TTL缓存的时间过后,博客建好后,访问你的域名heqiang
2017-02-04 14:48:36 1016
原创 React Native--flexbox
flexbox布局flexbox是React Native应用开发中必不可少的内容,也是最常用的内容。flexbox是由W3C在2009年提出的一种新的布局方案,该布局可以简单快速地完成各种伸缩性的设计。 flexbox是Flexible Box的缩写,即为弹性盒子布局。 flexbox布局由伸缩容器和伸缩项目组成。采用Flex布局的元素称为伸缩容器。伸缩容器的子元素成为伸缩项目,伸缩项目使用伸
2017-01-17 16:05:21 781
原创 使用JOOR实现Java反射
在前面的博客 Java反射使用 列举了Java反射的一些使用,下面介绍开源反射工具JOOR的使用。 只需几行代码就实现了前面博客中内部类的反射: public void testJoor(){ Reflect.on("com.example.heqiang.testsomething.OuterClass").create().field("mInnerClass").cal
2017-01-04 11:26:35 1810
原创 React Native--组件Component
创建一个Component一个组件类可以像前面Hello World工程中那样通过 class HelloWorldAppp extends Component 来创建,或者通过React.createClass来创建,并且提供一个render方法以及其他可选的生命周期函数、组件相关的事件或方法定义。因此,HelloWorldAppp和下面的实现方法是等价的:import React, { Comp
2016-12-28 15:34:21 4662
原创 React Native 入门
Helle World代码分析Helle World代码分析import React, { Component } from 'react';import { AppRegistry, StyleSheet, Text, View,} from 'react-native';export default class HelloWorldAppp extends Component
2016-12-27 17:34:59 579
原创 React Native--Image控件
基本用法加载本地图片<Image source={require('./img/baidu.png')}/>加载App内资源图片<Image source={{uri: 'ic_launcher'}} style={{width: 140, height: 140}} />加载网络图片<Image source={{uri:'http://172.17.137.68/heqiang/2.jpg'}}
2016-12-21 16:12:34 1766
html解析器ixml
2013-08-15
设计模式可复用面向对象软件的基础
2012-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人