
In Android 开发 on 2015年07月07日 by TAT.iptton view: 3,089
2

In Android 开发 on 2014年10月14日 by TAT.zhipingfeng view: 26,617
6
Event-driven programming for Android
Andoird 中事件驱动编程
https://medium.com/google-developer-experts/event-driven-programming-for-android-part-i-f5ea4a3c4eab
(This is the first article in a three-part series) (本文是系列文章中的一部分)
Although Android includes some event-driven features in its development, it is far away from being a pure event-driven architecture. Is this something good or bad? As in every issue with software development the answer is not easy: it depends.
虽然 Android 已经包含了若干事件驱动特性,但其离纯正的事件驱动架构还有一定的距离。这到底是好事还是坏事呢?和多数软件开发问题的答案一样:看情况。
手机上的环境传感器,一般包括气压传感器、温度传感器、湿度传感器、光传感器、声音传感器和距离传感器等。气压传感器能通过气压测量,判断手机当前位置的海拔高度,能提高 GPS 定位的精度,在三星 Galaxy Nexus 上有配备;温度传感器一方面用来测量气温,判断当前环境是否舒适,一方面也能监测手机内部温度是否异常;而比较普遍的是光传感器和距离传感器,对智能手机来说几乎是标配,并且一般设计位于手机正面上方听筒附近位置。
相信 volley 绝大部分做 android 的人已经知道了,关于 volley 的使用网上也是一抓一大把,都是说 volley 如何如何好用,下面分享下自己在使用 volley 过程中踩过的坑。
volley 好用的一个原因是封装的 api 看起来也比较直接,但是其回调的 api 做的是一般般,其中有一个 JsonObjectRequest 类,网上的使用说明也一大把,基本上都是最简单的情形:
Get 请求示例:
随着 Web 前端开发由 PC 转向 Mobile,作为前端工程师,除了需要去学习掌握移动端的新特性外,还需要面对大量移动端特有的难题,其中之一就是——怎么调试移动端页面? 针对调试的问题,现在已经有一些很好的解决方案,比如:weinre、chrome remote、手 Q 浏览器 Inspector,不过这些方案的门槛都较高,需要满足一些额外的条件。目前,在日常的开发调试工作中,打日志依然是一种常见的调试手段,通过日志内容来判断当前页面运行的状态,而日志的输出形式又有很多种,有 img 请求、dialog 弹窗、alert 等等,但这些输出方式都不能很好的满足我们的需要,甚至存在一些问题,所以 Rosin 诞生了。
Rosin 是一个 Fiddler 插件,它能接收页面中的 console 的输出,将内容持久存储在本地,并展现在 Fiddler 面板。 如果你的项目是通过 Fiddler 代理来开发调试手机页面,那么 Rosin 将会是你的好帮手。
项目地址: http://alloyteam.github.io/Rosin/
1 2 3 4 5 |
在开发sdk生成jar在eclipse里相对比较容易操作,只要导出class时指定哪里导出就可以, 但在用AndroidStudio开发时要导出jar就没那么容易,需要写gradle脚本,但gradle脚本 的入门成本还是比较高,网上也有打包jar的脚本参考,但大多是通过生成classes.jar重命名 来生成,这样生成的jar是包含工程里所有类的,有时我们需要指定一些包和类来生成jar。 下面是参考脚本: |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
task clearJar(type: Delete) { delete 'libs/sdk.jar' } task makeJar(type:org.gradle.api.tasks.bundling.Jar) { //指定生成的jar名 baseName 'sdk' //从哪里打包class文件 from('build/intermediates/classes/debug/org/cmdmac/cloud/pluginsdk/') //打包到jar后的目录结构 into('org/cmdmac/cloud/pluginsdk/') //去掉不需要打包的目录和文件 exclude('test/', 'BuildConfig.class', 'R.class') //去掉R$开头的文件 exclude{ it.name.startsWith('R$');} } makeJar.dependsOn(clearJar, build) |
1 |
在build.gradle写上后,只要在命令行执行gradle makeJar就可以在build/libs目录下找到这个jar |
上面是个简单的例子,只能打包某个包下面的所有文件,如果要实现只打某个包下面的某些子包或者文件可参考如下示例:
1 2 3 4 5 6 7 8 9 10 11 |
task makeSdkJar(type:org.gradle.api.tasks.bundling.Jar) { baseName 'pluginsdk' //只打包org.cmdmac下的org.cmdmac.pluginsdk.impl和org.cmdmac.gamecenter,其他子包不会被打包进去 from('build/intermediates/classes/debug/org/cmdmac/') { include 'pluginsdk/impl' include 'gamecenter' } into('org/cmdmac/') // exclude('R.class') // exclude{ it.name.startsWith('R$');} } |
假设我们要做一个效果,界面最顶部是一个 ActionBar 并且是半透明的,ActionBar 下面是一个 ListView,在初始状态下,ListView 是 top 是在 ActionBar 的 bottom 位置的,但当 ListView 滚动的时候可以透过 ActionBar 看到下面的 ListView 的内容。如下面两张图所示:
关于插件,已经在各大平台上出现过很多,eclipse 插件、chrome 插件、3dmax 插件,所有这些插件大概都为了在一个主程序中实现比较通用的功能,把业务相关或者让可以让用户自定义扩展的功能不附加在主程序中,主程序可在运行时安装和卸载。
在 android 如何实现插件也已经被广泛传播,实现的原理都是实现一套插件接口,把插件实现编成 apk 或者 dex,然后在运行时使用 DexClassLoader 动态加载进来,这里分享一下 DexClassLoader 加载原理和分析在实现插件时不同操作造成错误的原因。
移动 Web 开发是一块新的领域,给 Web 带来更多机会的同时,也带来了更多的挑战。为了让开发者在移动 Web 的道路上走得更加顺畅,开发更加高效,Spirit(勇气号)由此而生。
网上的教程好复杂,我写一个简版的。
Copyright © 2011-2021 AlloyTeam. All Rights Reserved. Powered By WordPress
粤ICP备15071938号-2