自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

高仿微信聊天界面长按弹框样式

高仿微信聊天界面长按弹框样式

  • 博客(42)
  • 收藏
  • 关注

原创 给 Flutter 界面切换来点特效

本文微信公众号「AndroidTraveler」首发。背景我们知道页面之间如果直接切换,会比较生硬,还会让用户觉得很突兀,用户体验不是很好。因此一般情况下,页面之间的切换为了达到平滑过渡,都会添加动画。另外,有时候我们不喜欢系统的默认动画,希望能够自定义动画。基于此,本篇主要讲述如何给 Flutter 的页面切换增加自定义动画。默认效果首先我们看看默认效果是怎样的?看起来似乎还不...

2019-09-09 08:33:51 743

原创 Flutter 即学即用系列博客——03 在旧有项目引入 Flutter

前言其实如果打算在实际项目中引入 Flutter,完全将旧有项目改造成纯 Flutter 项目的可能性比较小,更多的是在旧有项目引入 Flutter。因此本篇我们就说一说如何在旧有项目引入 Flutter。官方 WIKI 有说明,但是里面坑还是不少的,变化也是存在的。因此就让我们来看一看。目录1. 按照官网实现基本引入Add Flutter to existing apps上面...

2019-02-16 17:16:55 480

原创 Flutter 即学即用系列博客——02 一个纯 Flutter Demo 说明

前言上一篇文章我们搭建好了 Flutter 的开发环境。Flutter 即学即用——01 环境搭建这一篇我们通过 Flutter 的一个 Demo 来了解下 Flutter。开发系统:MACIDE:Android Studio目录1. 创建一个 Flutter 项目到此项目基本就创建完成了。2. 运行项目2.1 点击 IDE 运行按钮运行依次表示 flutt...

2019-02-16 17:16:03 456

原创 Flutter 即学即用系列博客——01 环境搭建

前言工欲善其事,必先利其器所以第一篇我们来说说 Flutter 环境的搭建。笔者这边使用的是 MAC 电脑,因此以 MAC 电脑的环境搭建为例。Windows 或者 Linux 也是类似的操作。Flutter 有英文版的官网和中文网,大家可以根据自己的喜好和情况进行选择。点击下面的链接可以到对应的安装页面。Flutter 官网安装链接Flutter 中文网安装链接我们这边以...

2019-02-12 20:11:17 276

原创 Android Debug 之 Log 最佳实践

本文微信公众号「AndroidTraveler」首发。背景在开发过程中,调试是必不可少的一项工作。当我们要确定项目的逻辑时,当我们要了解界面的生命周期时,当我们发现新写的逻辑与期望效果不一致时,当我们觉得数据有问题时…而调试有两种方式:第一种就是使用 debug 模式运行 APP,然后通过断点让程序运行到指定位置进行分析。第二种就是打日志的方式,通过观察输出来确定程序是否运行到该位置以...

2019-11-18 08:39:04 473

原创 因为 GitHub Actions 我发现了 Jake Wharton 的一个仓库

本文微信公众号「AndroidTraveler」首发。背景昨天(2019-11-14)上去 GitHub 上面一看,结果来了个下面的提示:点进去一看:看来是自动化构建相关的。那就试一下,选了第一个 Android CI,当然测试仓库是我新建的一个 Android 轮子库。编译报错了。上去 stackoverflow 上面找了一下,一个回答是:试了一下,还是不行。那就直接...

2019-11-15 09:00:45 261

原创 Android 开源库 GitHub 托管

本文微信公众号「AndroidTraveler」首发。背景之前给大家写过一篇文章 Android 上传开源项目到 jcenter 实战踩坑之路,分享了上传开源项目到 jcenter 上面的一些踩坑经验。最近,又有一个开源项目要上传,发现 jcenter 出现各种问题。登录不上,登录后点击不断返回登录界面,或者 404 如下:没办法,只能找找看有没有其他方式可以开源项目。本文定位本文...

2019-11-11 13:12:56 292

原创 Android 列表(ListView、RecyclerView)不断刷新最佳实践

本文微信公众号「AndroidTraveler」首发。背景在 Android 列表开发过程中,有时候我们的 Item 会有一些组件,比如倒计时。这类组件要求不断刷新,这个时候由于列表复用的机制,因此会有一些坑。那么我们本篇文章就给大家讲两个主题。第一个是列表复用是否一定有问题。第二个是出现问题有哪些解决方案可供我们选择。小 Demo由于我们的主题重点是为了解决不断刷新问题,因此关于 R...

2019-10-21 20:17:16 611

原创 Flutter 错误捕获的正确姿势

背景我们知道,在软件开发过程中,错误和异常总是在所难免。不管是客户端的逻辑错误导致的,还是服务器的数据问题导致的,只要出现了异常,我们都需要一个机制来通知我们去处理。在 APP 的开发过程中,我们通过一些第三方的平台,比如 Fabric、Bugly 等可以实现异常的日志上报。Flutter 也有一些第三方的平台,比如 Sentry 可以实现异常的日志上报。但是为了更加通用一些,本篇不具体...

2019-10-14 08:51:19 945

原创 设计模式之模板方法模式实战解析

本文微信公众号「AndroidTraveler」首发。背景最近在看《设计模式之禅》,为了能够更加深入的理解设计模式,达到学以致用。模板方法模式但凡和设计模式挂上钩,我们...

2019-09-02 08:00:00 84

原创 苹果电脑基本设置+Linux 命令+Android 实战集锦

本文微信公众号「AndroidTraveler」首发。背景大多数应届毕业生在大学期间使用的比较多的是 windows 电脑,因此初入职场如果拿到一台苹果电脑,可能一时间不...

2019-08-19 08:00:00 337

原创 初入职场,竟要我用 Mac 开发

本文微信公众号「AndroidTraveler」首发。上一篇我们分享了 Java 读写 excel 实战完全解析,文章需求是来自一位大学生的提问。这边分享了我个人的解题思路和方法,希望能够对他有所启发。另一篇 Android 开发你需要了解的那些事 是分享了一些 Android 开发相关的细节,希望帮助刚毕业进入职场的 Android 小伙伴。本篇也是基于类似的原因,所以分享一下,希望给之前...

2019-07-29 22:15:49 265

原创 Java 读写 excel 实战完全解析

本文微信公众号「AndroidTraveler」首发。背景时值毕业季,很多毕业生初入职场。因此,这边也写了一些新手相关的 Android 技术点。比如上一篇的 Android 开发你需要了解的那些事 就是列举了一些小点,避免新手 Android 开发者踩坑。同时,也是恰逢暑假,因此大学生处于放假阶段。这一篇主要是来自一位大学生的提问。因此这边分享一下我个人的解题思路和方法,希望能够对...

2019-07-23 20:14:41 307

原创 Android 开发你需要了解的那些事

本文微信公众号「AndroidTraveler」首发。背景最近部门有新入职员工,作为规划技术路线的导师,这边给新员工安排了学习路线。除了基本的学习路线之外,每次沟通,我都留了一个小问题,让小伙伴去思考。这些问题有些是刚接触 Android 开发的小伙伴所不熟悉的,有些则是部分初级工程师都没有注意到的。因此这边纪录一下,希望帮助刚毕业进入职场的 Android 小伙伴,或是对这些还不是很熟...

2019-07-15 08:38:44 142

原创 Android 上传开源项目到 jcenter 实战踩坑之路

本文微信公众号「AndroidTraveler」首发。背景其实 Android 上传开源项目到 jcenter 并不是一件新鲜事,网上也有很多文章。包括我本人在将开源项目上传到 jcenter 的时候也是参考了一些文章。不过由于版本和环境问题,很多很早以前写的文章并不完全适用。基于此,这边总结一下近期(2019-07-02)我上传开源项目到 jcenter 的实战踩坑之路。上传的开源项...

2019-07-05 13:14:05 284

原创 给你的 GitHub Repository 加上 sponsor 按钮

「本文微信公众号 AndroidTraveler 首发」背景其实之前 GitHub 就已经说过要给开源的开发者提供赞助支持。当你进入 GitHub 主页时,你会在右边发现一个 Tips。点击进去,会看到下面页面:可以看到还处于 Beta 阶段。点击 Join the waitlist 可以加入等待列表。由于我已经添加过了,所以会看到下面图片:但是正如图片所说,什么时候可以看到...

2019-06-27 11:16:31 1089

翻译 小白到大神,你需要了解的 sqlite 最佳实践

本文微信公众号「AndroidTraveler」首发。背景本文是对一篇英文文档的翻译,原文请见文末链接。并发数据库访问假设你实现了自己的 SQLiteOpenHelper。public class DatabaseHelper extends SQLiteOpenHelper { ... }现在你想要在多个线程中对数据库写入数据。 // Thread 1 Context con...

2019-06-17 10:13:04 165

原创 Flutter 快速上手定时器/倒计时及实战讲解

本文微信公众号「AndroidTraveler」首发。今天给大家讲讲 Flutter 里面定时器/倒计时的实现。一般有两种场景:我只需要你在指定时间结束后回调告诉我。回调只需要一次。我需要你在指定时间结束后回调告诉我。回调可能多次。下面针对这两种场景,我们来说下如何在 Flutter 里面使用。回调一次的定时器const timeout = const Duration(seco...

2019-06-10 09:49:57 693

原创 极客必备 Chrome 浏览器插件

本文微信公众号「AndroidTraveler」首发。自己平时使用的最多的就是 Chrome 浏览器,因此本文主要分享自己添加的一些扩展程序。介绍扩展程序的时候也是以我本人的实际使用为主,有些功能可能我没使用过,就不展开描述了。所以下面介绍的扩展程序功能可能只是一部分,更多使用就等你去发掘了。1. Momentum添加之后,你会看到如下界面:此时需要你输入你的名字,后续显示的时候会...

2019-06-06 10:15:17 679

原创 解决问题通用方法论

本文公众号「AndroidTraveler」首发。今天跟大家讲讲解决问题通用的一个方法论。在实际开发过程中,我们不可避免的会遇到一些 bug。那么对于 bug 或者我们没有遇到过的问题,怎么处理呢?本篇层层递进,一步一步跟你讲解。各位如果有其他方法或者补充的欢迎留言交流。如果全篇看完,你发现自己平时就是这么处理的,那么恭喜,你有自己的一套处理问题的方法论。本次讲解以本人 Androi...

2019-05-29 09:41:01 213

原创 Flutter 即学即用系列博客总结篇

前言迟到的总结篇,其实大家看我之前发的系列博客最后一篇,发文时间是 3 月 29 日。距离现在快两个月了。主要是因为有很多事情在忙,所以这篇就耽搁了。今天终于可以跟大家会面了。系列博客背景Flutter 正式版于 2018 年 12 月 5 日正式发布。而我所在的团队刚好想在项目新功能里面尝试 Flutter 的引入,利用 Flutter 的跨平台特性希望可以提高开发效率,因此本人作...

2019-05-28 09:56:54 798

原创 Android Q 兼容那些事

5 月 20 号参加了 Android Q Labs,因此本篇说一说会议的部分内容以及自己的一些想法。会议主要是加深开发者对 Android Q 的了解,从而帮助开发者做好 Android Q 的兼容工作。因此本篇我会选择性说明一些在 Android Q 上你需要兼容的一些事情。1. 后台 Activity 启动限制首先我们说说为什么要限制后台 Activity 的启动。Android...

2019-05-27 08:59:23 221

原创 Android 截屏的各种骚操作

本文公众号「AndroidTraveler」首发。背景在实际的应用场景中,Android 手机的截屏其实是很普遍的。比如说 PPT 演示,比如说技术博客图文并茂讲解。因此懂得 Android 手机截屏的各种操作就显得尤为重要。使用 AndroidStudio 自带的截屏工具在 Logcat 选项卡的左边工具栏有个拍照图标,点击一下就可以了。点击之后会弹出下面框,上面有一些操作可以点...

2019-05-22 09:55:41 606

原创 Flutter 你需要知道的那些事 01

公众号「AndroidTraveler」首发。1. width 属性对于设置控件宽度填充父控件这件事情,在 Android 里面,只需要设置 MATCH_PARENT 即可。但是在 Flutter 里面却不是这样,因为 Flutter 要具体的数值。所以我们可以这样考虑,假设我这个值非常大,比所有市面上的设备宽度还要大,那么是不是表现出来就是充满父控件了。所以这边的做法是设置为无限,即...

2019-05-05 10:17:30 559

原创 Flutter 异常处理之图片篇

背景说到异常处理,你可能直接会认为不就是 try-catch 的事情,至于写一篇文章单独来说明吗?如果你是这么想的,那么本篇说不定会给你惊喜哦~而且本篇聚焦在图片的异常处理。场景学以致用,有具体的应用场景,能够加深我们对知识的掌握。我们以简书的文章列表为例,如下图:假设产品有这样的需求,当右边的封面图加载失败的时候,用一个默认图片替换或者直接让文本横向填充原有图片位置。不管处理...

2019-04-15 10:31:02 4448

原创 Flutter 即学即用系列博客——10 混淆

前言之前的博客我们都是在 debug 的模式下进行开发的。实际发布到市场或者给到用户的都是 release 包。而对于 Android 来说,release 包一个重要的步骤就是混淆。Android 如何混淆如何你不做任何处理,直接在原有混淆基础上打出 release 包。当运行到 Flutter 对应代码,会 crash。因此我们需要在 Android 项目的 proguard-...

2019-03-29 19:18:04 970

原创 Flutter 即学即用系列博客——09 MethodChannel 实现原生与 Flutter 通信(二)

前言上一篇我们讲解了如何通过 EventChannel 实现 Android -> Flutter 的通信。并且也看到了 Flutter 内部 EventChannel 源码也是对 MethodChannel 的封装。因此这篇我们来说下如何通过 MethodChannel 实现 Android -> Flutter 的通信。至于 Flutter -> Android 的...

2019-03-23 20:29:01 378

原创 Flutter 即学即用系列博客——09 EventChannel 实现原生与 Flutter 通信(一)

前言紧接着上一篇,这一篇我们讲一下原生怎么给 Flutter 发信号,即原生-> Flutter还是通过 Flutter 官网的 Example 来讲解。案例接着上一次,这一次我们让原生主动将电池的充电状态发送给 Flutter 并在界面显示。步骤如下。1. Flutter 界面修改我们在原先基础上增加一列用于显示文本。String _chargingStatus = 'B...

2019-03-22 20:21:30 1586

原创 Flutter 即学即用系列博客——08 MethodChannel 实现 Flutter 与原生通信

背景前面我们讲了很多 Flutter 相关的知识点,但是我们并没有介绍怎样实现 Flutter 与原生的通信。比如我在 Flutter UI 上面点击了一个按钮,我希望原生做一些处理,那么原生怎么知道?比如我在原生有些变化需要告知 Flutter,Flutter 又如何获知?本篇我们先解决第一个问题。即 Flutter-> 原生的通信。路由回顾之前我们一直在讲 Flutter ...

2019-03-18 19:09:42 555

原创 Flutter map 妙用及 .. 使用

前言本篇文章对于熟悉 flutter 或者 dart 的小伙伴来说可能觉得比较简单,但是对于初学者或者没用过的小伙伴还是有些收获的。背景说到 map 妙用的发现,还要归功于 Tooltip 的研究。在研究这个 Widget 的时候,看到了它的源码 demo,所以发现了这个 map 的妙用。那么妙用在哪呢?统一处理我们在上节课说到了 Expanded 的比例布局。源代码如下:re...

2019-03-18 15:01:46 567

原创 dart 如何优雅的避空

前言对于每一个程序员来说,空指针异常应该是基本都会遇到过的异常,而且这个异常出现的概率还比较大。但是,空指针异常又是最容易解决的异常,因为只要加个非空判断就可以避免了。本篇通过对比一般非空判断和 dart 特有的语法糖告诉你如何使用 dart 进行优雅的避空。目录1. dart 在线编辑器一般一些简单的 dart 测试我们可以直接用在线编辑器来做测试和验证。下面给大家介绍的两个都...

2019-03-18 15:00:30 528

原创 Flutter 即学即用系列博客——07 RenderFlex overflowed 引发的思考

背景在进行 Flutter UI 开发的时候,控制台报出了下面错误:flutter: ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY >╞═════════════════════════════════════════════════════════flutter: The following message was thrown during...

2019-03-18 14:59:13 273

原创 Flutter 即学即用系列博客——06 超实用 Widget 集锦

本篇文章我们来讲讲一些比较常用的 Widget。大家验证的时候使用下面的代码替换 main.dart 代码,然后在 //TODO 语句返回下面常用 Widget 示例的代码。import 'package:flutter/material.dart';void main() => runApp(MyApp());class MyApp extends StatelessWidg...

2019-03-18 14:58:30 226

原创 Flutter 即学即用系列博客——04 Flutter UI 初窥

前面三篇可以算是一个小小的里程碑。主要是介绍了 Flutter 环境的搭建、如何创建 Flutter 项目以及如何在旧有 Android 项目引入 Flutter。这一篇我们来学习下 Flutter 的 UI。前言说到 UI,我就简单说下 Flutter 作为一门跨平台语言具有的优势之一,提高效率吧。举个例子:假设现在要开发一个界面,Android 开发需要一天,iOS 开发也需要一...

2019-03-18 14:56:42 453

原创 Flutter 即学即用系列博客——05 StatelessWidget vs StatefulWidget

前言上一篇我们对 Flutter UI 有了一个基本的了解。这一篇我们通过自定义 Widget 来了解下如何写一个 Widget?然而 Widget 有两个,StatelessWidget 和 StatefulWidget,我们要继承哪一个?下面让我们跟着文章来探索一番。目录1. StatelessWidget我们先来看下继承的 Widget 为 StatelessWidget ...

2019-02-20 19:32:50 154

原创 GitHub 可以免费创建私人仓库啦

如果你不知道什么是 GitHub,也可以往下看,只不过可能感受不会那么深啦。昨天,GitHub 博客发表了文章其中比较重要的已经用蓝色线标注了。GitHub 支持开发者创建免费私人仓库,但是需要注意的是这里要求协作者最多 3 人。也就是免费的私人仓库最多人数是 4 个人(加上自己)。这边试着创建了一下,成功了那么这个改动影响如何呢?不管你之前有没有使用过私人仓库,这个消息都是一个...

2019-01-08 14:29:05 2119

原创 Android SDK 开发——发布使用踩坑之路

前言在 Android 开发过程中,有些功能是通用的,或者是多个业务方都需要使用的。为了统一功能逻辑及避免重复开发,因此将该功能开发成一个 SDK 是相当有必要的。背景刚好最近自己遇到了类似需求,在开发完 SDK 之后,集成到项目或者提供给别人的时候遇到了一些坑,这里分享一下,以避免其他需要开发 SDK 的开发者们重复踩坑。文章要说明的内容如下:集成方式对比AAR 集成方式的一些...

2018-12-07 09:42:12 239

原创 Android 8.0 的部分坑及对应解决方法

虽然 Android 9.0 都已经面世了,本篇文章写的有点迟了。 但是迟到好过不到,因此基于此这边还是记录一下项目中遇到的 Android 8.0 的坑及对应解决方法。每次系统升级,虽然系统功能更加强大了,各方面性能也提高了。但是对于开发者而言,一个困扰的问题也是随之而来——兼容。尤其对于一些已经上市的 App 而言,在新系统发布之前就要了解到底有哪些改动,以避免用...

2018-08-15 19:49:05 2602

原创 zxing 如何识别反转二维码

说起二维码扫描,估计很多人用的是 zxing 吧。然而 zxing 虽然好用,但是却有一些坑。这边分析一下自己实际项目遇到的一个坑。什么坑呢?下面举个栗子你就懂了。这边生成二维码使用的是网络上的一个网站联图以百度为例,正常情况生成的二维码如下:这种情况下用 zxing 分分钟就可以识别出来。但是假设我将前景色和后景色调换,生成的二维码如下:这种情况下...

2018-07-23 10:08:29 705

原创 换个角度看问题

换个角度看问题,可以节省你大量时间,提高你的效率。背景公司开发的一个 app,有用户反馈在打开网页点击上传图片按钮时,点击拍照不能唤起系统相机。还说在 Android 6.0 以上手机可以,以下不行。听到这里,我大概知道应该是权限问题了。更多关于权限的可以看下我这篇文章 android开发之调皮的权限。解决之路既然知道是权限问题,那么问题就简单了,在选择...

2018-06-25 15:46:34 653

空空如也

空空如也

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

TA关注的人

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