【爱上Android】作者,从事Android开发和教育多年,担当多个重点项目的负责人,项目涉及办公类、O2O、医疗等多元化类型,曾在培训机构从事Android教育多年,有上千课时讲课经验。
感谢大家支持, 《爱上Android》,已经由人民邮电出版社出版。
Python中 1行代码能实现的功能,决不写5行代码。请始终牢记,代码越少,开发效率越高。 切片 取一个list或tuple的部分元素是非常常见的操作。Python提供了切片(Slice)操作符 L = ['老于', '小王', '小明', 'Bob', 'Jack'] print(L[0:3]); 输出结果 ['老于', '小王', '小明'] L
函数 下面的地址可以查看函数: https://docs.python.org/3/library/functions.html 也可以在交互式命令行通过help()查看函数的帮助信息。 如: >>>help(abs) 调用函数也非常简单,传入的参数数量和类型一致就行,传入的参数数量不对或类型不能被函数所接受,会报TypeError的错误
真正用心写完一本书,才知道写书真的很不容易。 我热衷喜欢分享一些技术,也喜欢钻研一些新东西,去年微信小程序刚内测的时候,我和我的同事四个人就一起研究,恰好公司有小程序相关的项目,做项目的同时,越发感觉到小程序很有意思。 在App越来越难装到手机里的今天,小程序这款产品真的特别棒! 我们四个人都非常认同小程序,开始决定写个系列教程,用于给公司其它员工参考。我
在Google IO 2017 大会上,Google将 Kotlin列为 Android官方开发语言,Android Studio 3.0 也默认集成了Kotlin插件。 Android Studio 3.0目前是预览版,下载地址: https://developer.android.google.cn/studio/preview/index.html 如果您是更早的版
输入输出 input() 输入函数 print() 输出函数 程序一运行,会首先打印出please enter your name:,这样,用户就可以根据提示,输入名字后,得到hello, xxx的输出: name = input('please enter your name: ') print('hello,', name) 输出的时候 ,分隔开,会自动加一个
最近事比较多,距离上次写文章已经过去了一个月了。上一篇文章Retrofit全攻略——基础篇 介绍了Retrofit的基础用法,这篇文章介绍点进阶的用法。 打印网络日志 在开发阶段,为了方便调试,我们需要查看网络日志。因为Retrofit2.0+底层是采用的OKHttp请求的。可以给OKHttp设置拦截器,用来打印日志。 首先可以在app/build.gradle中添加依
实际开发过程中一般都会选择一些网络框架提升开发效率。随着Google对HttpClient 摒弃和Volley框架的逐渐没落,OkHttp开始异军突起,而Retrofit则对OkHttp进行了强制依赖,可以简单理解Retroifit在OKHttp基础上进一步完善。 Retrofit是由Square公司出品的针对于Android和Java的类型安全的Http客户端,目前
BottomNavigationView 很早之前就在 Material Design 中出现了,但是直到 Android Support Library 25 中才增加了 BottomNavigationView 控件。也就是说如果使用官方的BottomNavigationView控件必须让targetSdkVersion >= 25,这样才能引入25版本以上的兼容
Android Studio2.2更新布局设计器,同时,引人了约束布局ConstraintLayout。 简单来说,可以把它看做是相对布局的升级版本,但是区别与相对布局更加强调约束。何为约束,即控件之间的关系。 它能让你的布局更加扁平化,一般来说一个界面一层就够了;同时借助于AS我们能极其简单的完成界面布局。 ConstraintLayout简介 Constra
几乎每个程序都需要用到图片。 在小程序中我们可以通过image组件显示图片。 当然小程序也是可以上传图片的,微信小程序文档也写的很清楚。 上传图片 首先选择图片 通过wx.chooseImage(OBJECT)实现 官方示例代码 wx.chooseImage({ count: 1, // 默认9 sizeType: ['origina
之前写过一篇比较水的文章Android手机控制电脑撸出HelloWorld 里面用到了JNI/NDK技术。 这篇文章给大家介绍下JNI/NDK开发。采用的是Android Studio2.2开发环境,使用CMake方式进行开发。 JNI(Java Native Interface)是java与C/C++进行通信的一种技术,使用JNI技术,可以java调用C/C+
Space控件是在Android 4.0中加入,是个空白的view,一般用于填充View组件中的间隙。 support-v4包里提供了兼容低版本的Space控件。 源码分析 Space控件源码非常简单,先来看看 public class Space extends View { public Space(Context context, Attrib
最近在开发一个远程办公的软件。 昨天在手机调通,并且成功通过手机打开电脑上的Eclipse撸出来一个HelloWorld。 也许不久的将来, 下班后,拿着手机在家写代码了。工作时间直接变成24/24 /7 废话不多说,先来看下面的截图,图片都是手机截图 直接通过手机打开一个Windows操作系统。 下面打开Eclipse,创建了java工程。 相关原理 本
React Native不到两岁,兼容Android平台刚刚1年。我学习React Native其实也就不到1年,不算长,也不算短。 Paul Graham在文章中写过:大多数人真正注意到你的时候,不是第一眼看到你站在那里,而是发现了过了这么久你居然还在那里。 我就是Paul提到的”大多数人”,当React Native刚出来的时候,我就通过CSDN等一些平台了解
我们使用手机的时候经常会看到应用程序提示升级,大部分应用内部都需要实现升级提醒和应用程序文件(APK文件)下载。 一般写法都差不多,比如在启动app的时候,通过api接口获得服务器最新的版本号,然后和本地的版本号比较,来判断是否需要弹出提示框下载,当然也可以通过推送的自定义消息来实现。 我们这里主要讨论的是应用程序下载,并在通知栏提醒下载完成。 实现过程大致分为三步:
学会一项开发技能最快的步骤就是:准备,开火,瞄准。最慢的就是:准备,瞄准,瞄准,瞄准…… 因为微信小程序比较简单,直接开撸就行,千万别瞄准。 于是乎,趁着今天上午空气质量不错,撸了一个小程序,放在了男性交友网站上了, 我添加了很全的注释,大家赏个star。 地址:https://github.com/yll2wcf/wechat-weapp-lifeTools
有兴趣学习微信小程序开发的可以关注简书专题 微信小程序开发 由于微信已经开发文档和开发工具了,所以下面的内容用处不大了。 具体参考:http://mp.weixin.qq.com/wiki/ 这篇文章只是资源的搬运工, 感谢各位大神的无私奉献。 由于微信小程序只邀请了200个大V内测,但是这些大V好多都是不写代码的CTO了,让真正想学习些代码的灰常着
React Native正式版本还没发布,但是小版本基本上每个月都更新1-2次。9月11号又更新了0.33版本,其中有两个增强功能正好是项目中用到的. 添加Android6.0权限验证API Add JS library for requesting Android M Permissions (0fb2ccf) - @cmcewen Android对话框可以设置ca
React Native中经常会看到Promise机制。 Promise机制代表着在JavaScript程序中下一个伟大的范式。可以把一些复杂的代码轻松撸成一个串,和Android中的rxjava非常像。 Promise代表一个任务结果,这个任务有可能完成,有可能没有完成。Promise模式唯一需要的一个接口是调用then方法,用来注册当Promise完成或者失败时调用的
数据持久化就是指应用程序将某些数据存储在手机存储空间中。 借助native存储 这种方式不言而喻,就是把内容传递给native层,通过原生API存储,详见从零学React Native之05混合开发 AsyncStorage API RN框架为开发者提供了 AsyncStorage API,开发者可以利用它将任意“字符串键值对”保存到存储空间中。 它是简单的
一个React Native组件从它被加载,到最终被卸载会经历一个完整的生命周期。所谓生命周期,就是一个对象从开始生成到最后消亡所经历的状态,理解生命周期,是合理开发的关键。 ES6语法和之前的ES5语法有所变化,本篇文章是根据ES6语法写的。 在ES5语法中,有getDefaultPropTypes这个函数,这个函数在组件被创建时,调用一次,它的返回值成为了this
我们之前学习了TextInput组件, 有时候我们需要在TextInput组件中复制或者粘贴一些文字。 React Native为开发者提供了 Clipboard API,Clipboard 组件可以在iOS和Android的剪贴板中读写内容。目前还只支持获取或者存放字符串。 主要方法 static getString() 获取剪贴板的文本内容,返回一个Promi
之前我们学习了从零学React Native之11 TextInput了解了TextInput相关的属性。 在开发中,我们有时候有这样的需求, 希望输入区域的高度随着输入内容的长度而增长, 如下: 这时候我们需要自定义一个组件: 在项目中创建AutoExpandingTextInput.js import React, {Component} from 'react'
本来写程序经常会碰到各种难缠的Bug,自从修改了注释模板,bug明显少了,看效果图: 好吧,我逗比了 下面是文字版: /** _oo0oo_ o8888888o 88" . "88 (| -
StatusBar是React Native 0.20 新增的跨平台组件,它可以用来设置并动态改变设备的状态栏显示特性。 虽然说是跨平台的组件, 但是有些属性不是跨平台的 ,我们需要注意下。因为IOS和Android本身有些区别,使用这个组件最好都要适配的。 属性 属性名 描述 animated 布尔类型,用来设定颜色样式改变或者隐现时是否有动画,
Android7.0新推出了一个非常实用的功能——添加快速设定(或者翻译成快速设置),但是感觉社区里关注的人比较少,可能目前为止国内还没有Android7.0的手机,但是越早接触越好,甚至可以告诉产品经理7.0以上可以实现此功能,从而让公司的产品更加与时俱进。 “快速设置”通常用于直接从通知栏显示关键设置和操作,非常简单。在Android 7.0以后任何应用都可以在下拉菜单
之前文章中,我们使用了许多React Native组件,也定义了一些组件。但是我们都没有定义组件的标识,我们都是通过回调方法处理组件对应的事件,这种情况能满足绝大多数需求,有些情况我们需要对组件进行操作,此时就需要获取组件的引用,进而通过该应用对组件进行操作。比如,我们可以通过引用拿到组件,修改组件的属性。 定义组件的引用 通过在JSX代码中加入 ref=”某个字符串
TextInput 组件是用来通过键盘输入文字,可以使用View组件和Text组件样式,没有自己特定的样式。 与Text组件类似,TextInput组件内部的元素不再使用FlexBox布局,而采用文本布局。详情见上一篇文章从零学React Native之10Text TextInput属性 只列出了一些常用的,详情见官网 属性名 描述 default
在React Native开发中,所有需要显示的字符串文本都需要放置在Text或者Text的子组件中。虽然在之前的文章中多次使用了Text组件,但是Text组件还是值得专门学习的, 并没有想象中的那么简单。 任何一个组件,都有样式和属性,样式一般约束控件的样式和位置,定义在style属性中。属性就是直接声明在控件上。 Text样式 Text组件支持View的所有样式
9月11号 0.33版本,resizeMode中添加了center, 可以实现一样的功能。不过希望这篇文章还能帮助大家。 之前我们学习了从零学React Native之08Image组件 大家可以发现, 原生的Image控件无法实现等比放大后无丢失显示。 如: 有一张20x10的图片, 要放入一个40x30的显示区域内. 1. cover模式(默认),图片放大
错误1 Element type is invalid…: 错误描述: Element type is invalid: expected a String(for built-in components) or a class/function(for composite components) but got:object. check the render meth
之前我们学习了可触摸组件和页面导航的使用的使用: 从零学React Native之09可触摸组件 … 从零学React Native之03页面导航 … 经过之前的学习, 我们可以完成一个自定义导航栏了, 效果如下: 我们需要创建一个 NaviBar.js 用来显示顶部的导航栏, 还需要四个界面(Page1.js,Page2.js,Page3.js,Page4.js
可触摸组件有: TouchableHighlight,TouchableNativeFeedback,TouchableOpacity,TouchableWithoutFeedback 1. TouchableWithoutFeedback,在用户触摸的时候没有反馈任何触摸效果,体验很不好,基本很少使用. 2. TouchableNativeFeedback 是Andro
开发过程中, 几乎每个项目都会用到图片. RN就是通过Image组件显示图片。既可以加载网络图片,也可以加载本地资源图片。 Image组件必须在样式中声明图片的款和高。如果没有声明,则图片将不会被呈现在界面上。 网络图片加载 加载网络图片非常简单, 直接上代码: 修改index.ios.js或者inde.android.js import React, {
View 组件是React Native最基本的组件.绝大部分其他React Native 组件. View组件的颜色和边框 backgroundColor 键用来指定颜色. RN 0.19版本开始,只有Text和TextInput组件会继承父组件的背景颜色 Opacity键定义了View组件的透明度, 取值0-1, 0表示完全透明 borderStyle键用来设
在React Native界面开发中, 如果使用绝对定位布局,在代码运行时的某个时刻有可能会遮盖住它的下方的某个组件。这是因为绝对定位只是说这个组件的位置由它父组件的边框决定。 绝对定位的组件可以被认为会覆盖在它前面布局(JSX代码顺序)的组件的上方. 如果被遮盖住的组件需要处理触摸事件。比如我们在一个地图组件上覆盖了一个图像组件用来显示信息,又不想让这个图像组件影响用户
前面我们接触了好多React Native代码, 并没有介绍RN中的组件具体是如何布局的,这一篇文章,重点介绍下flexbox布局。 什么是flexbox布局 React中引入了flexbox概念,flexbox是属于web前端领域CSS的一种布局方案,是2009年W3C提出了一种新的布局方案,可以简便、完整、响应式地实现各种页面布局。你可以简单的理解为flexbox
本篇文章,我们主要讨论如何实现Android平台的混合开发. RN给Android端发送消息 首先打开Android Studio, Open工程, 在React Native项目目录下选择android子目录下的build.gradle文件打开。 React Native已经默认帮我们创建好了两个类MainApplication和MainActivity p
属性声明 因为用React Native创建的自定义组件可以复用, 我们开发过程中可能一个项目组有多个人同时开发,其他同事可能会用到我们自定义的组件, 但是他们使用的时候很容易忘记使用某些属性,这时候我们应该在自定义组件中声明一些属性。 //自定义组件 export default class ConfirmDialog extends Component {
之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 从零学React Native之02状态机 从零学React Native之03页面导航 本篇主要介绍: 1. 自定义组件 2. Alert 对话框 自定义对话框 之前的我都是利用React Native提供的基础组件对它们进行排列组合, 其
之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 从零学React Native之02状态机 本篇主要介绍页面导航 上一篇文章给大家介绍了简单界面的搭建, 这一篇我们需要两个界面, 一个是注册界面,一个是注册信息界面. 当然我们还需要一个组件去控制两个界面的切换. 每个界面其实就一个组件 , 可以
本篇文章首发于简书 欢迎关注 之前我们介绍了RN相关的知识: 是时候了解React Native了 从零学React Native之01创建第一个程序 本篇文章主要介绍下下面的知识: 1.简单界面的搭建 2.状态机添加 3.渲染框架简介 4.语法简化 搭建界面 之前我们介绍了如何创建一个应用,现在我们来开发一个简单的注册界面。注释都写在代码里了, 如下: 进入项目
本篇首发于简书 欢迎关注 上一篇文章是时候了解React Native了介绍了React Native。大家应该对React Native有个初步的认识。 接下来我们就可以初始化一个React Native项目了。 创建项目 打开命令窗口,进入我们希望建立的项目目录所在的父目录后,输入命令 react-native init AwesomeProject
本文系统介绍,JSON解析的成长史,未经允许,禁止转载。 JSON是一种轻量级的数据格式,一般用于数据交互 Android交互数据主要有两种方式:Json和Xml,Xml格式的数据量要比Json格式略大,为了节省流量,减轻服务器压力,目前绝大多数公司都使用Json交互。 目录 [一、使用原生方式解析Json](## 一、使用原生方式解析Json) [二 、Gso
背景介绍 最近项目打算做一个界面,类似于dayone首页的界面效果,dayone 是一款付费应用,目前只有IOS端。作为一个资深懒惰的程序员,奉行的宗旨是绝对不重复造一个轮子。于是乎,去网上找一大堆开源项目,发现没有找到合适的,然后,只能硬着头皮自己来了。先看看效果: 其实写起来也比较简单,就是控制ListView的头部和底部的高度就可以了, 如果用RecycleVi
内存泄露,是Android开发者最头疼的事。可能一处小小的内存泄露,都可能是毁于千里之堤的蚁穴。 怎么才能检测内存泄露呢?网上教程非常多,不过很多都是使用Eclipse检测的, 其实1.3版本以后的Android Studio 检测内存非常方便, 如果结合上MAT工具,LeakCanary插件,一切就变得so easy了。 熟悉Android Studio界面 工欲