Google IO大会进行中,本次大会Android最大的新闻当属Android O以及Kotlin被官方认可。我发现了原来还有发布官方的架构库,以及推荐使用指南,分享给大家。
架构原则
关注分离
模型驱动UI,优先持久化模型
more
新架构
如上图所示,为新的架构模式:
Activity/Fragment
UI层,通常是Activity/Fragment等
监听ViewModel,当VIewModel数据更新时刷新UI
监听用户事件反馈到ViewModel。
ViewModel
持有保存,或者想Repository来获取UI层需要的数据
响应UI层的事件,执行响应的操作
响应变化,并且通知到UI
继续阅读 »
Android N 正式版已经发布了。对于开发者来说一个重大的更新是对于Java支持到了Java8,其中一点就是支持Lambda。我们就来聊聊什么是lambda,怎么在Android中使用。
什么是lambda
Lambda 可以理解为匿名函数,帮助我们写出更加简洁的代码。
more
给view设置一个clicklistener,原本你需要写出这样的代码:
java
v.setOnClickListener(new View.OnClickListener(View v) {
@Override
public void onClick(View v) {
Toast.makeText(getActivity(), "c
继续阅读 »
小红书Android客户端第一个版本于2014年8月8日发布,转眼到了2016年8月8日,小红书Android版本发版两周年。趁机回顾一下小红书的Android版本,两年中我们踩过很多坑,收获很多经验,分享出来与大家共勉。
小红书从最初1.0到现在目前4.7版本,历经两年,安装包从原先的5M发展到现在的17M,产品模块也从原先的只有社区模块发展到了具有社区和电商两个大模块。App包含社区、电商、支付、推送、直播、统计等各种功能和模块,那么开始吧。
more
功能演进
两年的时间,30多个版本的迭代,许多功能都有了翻天覆地的变化。我们的新人欢迎页也是从最初的比较炫的效果发展到目前比较稳定的简洁版本。当初钟大侠花了无数个日日夜夜
继续阅读 »
之前做过一个图上标签但是动画样式不太好看,经过查找资料发现了一种全新的思路来实现动画,流畅的让标签的线显示和隐藏,示例如下,就在这里说一说。本文会涉及到Path,Property Animation, PathEffect, PathMeasure。我们开始一一道来。
more
使用Path绘制曲线
当我们需要画曲线的时候,可能会直接使用drawLine来画,不太复杂的话还比较好实现,如果需要画曲线,或者拐弯的线的时候使用drawLine就比较复杂了。这时候,我们可以借助Path来drawPath。
java
Paint paint = new Paint();
paint.setColor(Color.BLACK);
p
继续阅读 »
随着时代的发展,Android的状态栏都不是乌黑一片了,在Android4.4之后我们可以修改状态栏的颜色或者让我们自己的View延伸到状态栏下面。我们可以进行更多的定制化了,然而有的时候我们使用的是淡色的颜色比如白色,由于状态栏上面的文字为白色,这样的话状态栏上面的文字就无法看清了。因此本文提供一些解决方案,可以是MIUI6+,Flyme4+,Android6.0+支持切换状态栏的文字颜色为暗色。
more
修改MIUI
java
public static boolean setMiuiStatusBarDarkMode(Activity activity, boolean darkmode) {
C
继续阅读 »
默认情况下情况下,使用Android的WebView是不能够支持上传文件的。而这个,也是在我们的前端工程师告知之后才了解的。因为Android的每个版本WebView的实现有差异,因此需要对不同版本去适配。花了一点时间,参考别人的代码,这个问题已经解决,这里把我踩过的坑分享出来。
主要思路是重写WebChromeClient,然后在WebViewActivity中接收选择到的文件Uri,传给页面去上传就可以了。
more
创建一个WebViewActivity的内部类
```java
public class XHSWebChromeClient extends WebChromeClient {
// For Androi
继续阅读 »
随着手机性能的提高,以及iOS和Android两个平台的普及,更多的App都会选择两个平台的App都进行开发,在有些时候,为了更加快速的开发,我们会采用hybird方式开发,这个时候我们需要使用webview并且自己进行一些配置。Android的webview在低版本和高版本采用了不同的webkit版本内核,4.4后直接使用了chrome,因此问题很多,这里分享一些我使用过程的一些技巧和遇到的坑。
more
webview配置
java
mWebview.getSettings().setJavaScriptEnabled(true); //设置允许运行javascript
// HTML5 API flags
mWebview
继续阅读 »
android最近的support库提供了AlertDialog,可以让我们在低于5.0的系统使用到跟5.0系统一样的Material Design风格的对话框,但是使用了一段时间想到一些办法去改变对话框按钮字体的颜色,都不生效。
最近在网上找到了改变的方法,首先来说一下。
more
改变AlertDialog的样式
在xml中定义一个主题:
xml
<!-- Used for the buttons -->
<item name="colorAccent">#FFC107</item>
<!-- Used for the title and text -->
<item name="andr
继续阅读 »
声明,这不是广告,没有任何利益瓜葛。
App内测需要把安装把安装包放在一个地方进行托管,方便内测人员下载。国内有蒲公英,fir,等等这些网站可以用。
最近fir上了新版本了,上了新的api,新界面,本以为它们会提供gradle的上传工具,结果没有,而且它们新版本还不好用,原本的下载统计浏览统计都没有了,结果上传很慢,甚至上传不了,我便写了一个gradle的上传工具。
more
先介绍使用方法吧
使用方法
插件目前只有唯一一个task
uploadFir --上传apk到fir
集成插件本插件,你要按照如下方法使用
编辑build.gradle
```groovy
buildscript {
repositor
继续阅读 »
最近团队里面在做程序界面统一的工作,因此希望统一字体,接到一个研究怎么自定义字体的任务。因为我们的开发模式,所以需要研究在界面内的字体自定义,以及webview的显示中的字体自定义。
android系统内置字体
android 系统本身内置了一些字体,可以在程序中使用,并且支持在xml配置textView的时候进行修改字体的样式。支持字段为android:textStyle ,android:typeface, android:fontFamily,系统内置了normal|bold|italic三种style, 内置了normal,sans,serif,monospace,几种字体(实测这几种字体仅英文有效),typace和fo
继续阅读 »