Category: android
Flutter Example Apps (Source Code + YouTube Link)
Clones/Apps
Flutter For Web / Desktop / Responsive
-
Flutter For Web: Getting Started | Migrating PokemonApp to Web
-
Flutter Web: Deploying Portfolio App To Github.IO | Peanut Tutorial | Part 2
-
Flutter Web: Deploying Flutter UIKit to Github Pages | Peanut Tutorial
-
Flutter Web : Flutter 1.10 Adding Web Support For New & Existing Projects
-
Flutter Responsive Portfolio App | Flutter Mobile, Web, & Desktop | SpeedX Code
Flutter Designs
Beginners & Intermediate
-
Flutter Material Design Widgets – | Tabs | BottomNavigationBar | Stepper | Snackbar etc App
-
Flutter: Integrate Analytics | Firebase Analytics | Handling Library Issues P3
-
Flutter: Prepare App For Release | App Signing | Create JKS P4
-
Flutter: Programatically Check Whether Debug OR Release Mode
-
Routes in Flutter | Push | PushNamed | GenerateRoute | Unknown Route
-
Flutter: Data Connection Checker | Wifi connected but no internet
-
Flutter: Overriding Dependencies | Solving Version Conflicts
-
Flutter: Styling Google Maps For Multiple Themes | Android & iOS | Official Plugin
-
Flutter: WhatsApp Clone Status View | Story View Feature Tutorial
Advanced
-
Flutter Advanced: Inherited Widget & Scoped Model Explained | Part – 1
-
Flutter Advanced Redux: Shopping Cart App From Scratch | Redux Time Travel
-
Flutter Advanced: Build Your First Plugin For Android & iOS | Flutter Toasts
-
Flutter Advanced: Download Large Files (Pdf, Json, Image etc) With Progress %
-
Flutter Advanced : Build Beautiful Material Search App or Integrate it with Any App
-
Flutter Advanced : Add Flutter To Existing Or New Android App
-
Flutter Advanced Face ID & Touch ID/Fingerprint Local Auth App
-
Flutter Advanced Securing your Flutter Apps | Prevent Screenshot App
-
Flutter Advanced: ARCore Tutorial | Sceneform | Exploring New Possibilities
-
Flutter Advanced: PDF Viewer Tutorial Android & IOS | From URL & Asset
-
Flutter Advanced: Auto Create Models from JSON | Serializable
-
Flutter Advanced: Background Fetch | Run code in the background Android & iOS
-
Flutter Advanced: Lazy Loading ListViews | Load More Data On Scroll
-
Flutter Advanced: Find Widget’s Size & Position Using Render Object
-
Flutter Advanced: TensorFlow Lite | Object Detection | YoloV2 | SSD Tutorial
Flutter Animation Series
Flutter Library Series
-
Awesome HTTP Inspector Tool | Flutter Library of the Week | EP-01
-
Awesome Animated Loaders | Flutter Library of the Week | EP-02
-
Awesome Onboarding Experience | Flutter Library of the Week | EP-03
-
Storing Keys in .env file | BuildConfig | Flutter Library of the Week | EP-06
Flutter Weekly Widgets Series
-
Flutter Advanced: Overlay Widget | Ep 7 | Flutter Weekly Widgets
-
Flutter Advanced: Placeholder, Spacer, Visibility Widgets | Ep 8
Plugins on pub.dartlang.org
-
Flutter Toast PK – A new Flutter plugin for showing toast in android and ios.
-
Random PK – A new Flutter package that gives a container with random color.
-
PK Skeleton – A Facebook & Twitter Like Card Loading Shimmer Skeleton Library..
-
MediumClapFlutter – A Custom Floating Action Button (FAB) library like clapping effect on Medium.
Dart Series
Dart Backend Series (Source Code + YouTube Link)
-
Dart: How to write your first REST API | Intro & 1/7 | Aqueduct
-
Deno (Backend) + Flutter (Frontend) Full Tutorial | QuotesX API & APP
Workshops & Interviews
2017 春季最酷的 30 个 Android 库
这里是 30 个我最喜欢的在 2017 年 3 月前新出现的 Android 库。其中一些并没有用于实际产品,但你使用它们可能会得到很多的乐趣。我希望你们喜欢这些库。
下面的顺序不代表排名:
1.Matisse
这是一个漂亮的本地图片、视频选择器。其主要功能有:
- 选择包括JPEG、PNG、GIF格式的图片和 MPEG、MP4 格式的视频
- 支持自定义主题,包括两个内置的主题
- 不同的图片加载器
- 定义自定义过滤规则
- 在 Activities 和 Fragments 中操作良好
你可以在代码库的 wiki 中发现更多。

2. Spruce Android Animation Library (安卓动画库)
Spruce 是一个轻量级的动画库,可以帮助排版屏幕上的动画。使用有很多不同的动画库时,开发人员需要确保每个视图都能够在适当的时间活动。 Spruce 可以帮助设计师获得复杂的多视图动画,而不是让开发人员在原型阶段就感到畏惧。

Chips 是 Material Design 中组件,他们被描述为
MaterialChipsInput 是在 Android 中实现的那个组件。这个库提供了两个视图:ChipsInput 和 ChipView.

4. Grav
该库允许基于点创建多个动画。 你可以很容易地制作出光滑美丽的动画。 README 包含很多示例,因此您可以在此处查看。

5. Litho
Litho 不是库,而是一个框架。它是一个非常强大的框架,以声明的方式构建 UI。它由 Facebook 的开发者开发,所以就算你不想使用它,它仍然值得你去关注它的开发过程。

主要特性包括:
- 使用申明式 API 来定义 UI 组件。你只需要基于一套固定的输入来描述布局就好,其它事情框架会搞定。
- 异步布局:Litho 可以在不阻碍 UI 线程的情况下计算并对 UI 布局。
- 扁平化视图:Litho 使用 Yoga 来布局,并自动缩减 UI中 ViewGroups 的数量。
- 细粒度回收:UI 中任何像 text 或 image 之类的组件都能被回收再利用。
6. Adaptable Bottom Navigation(自适应的底部导航)
不久前 Google 更新了 Material Design 的计划,介绍了底部导航栏,这是个在应用中让 UI 跟随内容变化的不错的方式。设计支持库(Design Support Library) 中也添加了实现。

用自适应底层导航替换支持库中的 BottomNavigationView 非常简单。它以 ViewPager 和 TabLayout 的工作方式来实现。这里有来自开发团队的一个简短说明:
你可以在 Github 中找到更多相关信息。对于为什么要实现这个东西,那里有详尽的资料和说明(提示:结构清晰)。

7. PatternLockView(图形锁视图)
README 中充满了示例,所以入门很容易。

8. Isometric
这是一个有助于绘制等轴形状的库。在我看来,它是本列表中最炫的库之一,因为它让我想起了 Monument Valley 游戏。
该库支持绘制多个形状、路径和复杂结构,如下面的示例:

UltraViewPager 是一个封装多种特性的 ViewPager ,主要是为多页面切换场景提供统一解决方案。

主要功能
- 支持横向滑动/纵向滑动
- 支持一屏内显示多页
- 支持循环滚动
- 支持定时滚动,计时器使用 Handler 实现
- 支持设置 ViewPager 的最大宽高
- setRatio 按比例显示 UltraviewPager
- 内置 indicator ,只需简单设置几个属性就可以完成展示,支持圆点和 Icon;
- 内置两种页面切换动效
该库有一个非常良好的文档。
10. InfiniteCards
可自定义动效的卡片切换视图,该库有助于实现卡片 UI ,然后用一个漂亮的动画切换它们。

参数
-
- animType : 动效展示类型
front : 将点击的卡片切换到第一个
-
- switchPosition : 将点击的卡片和第一张卡片互换位置
- frontToLast : 将第一张卡片移到最后,后面的卡片往前移动一个
- cardRatio : 卡片宽高比
- animDuration : 卡片动效时间
- animAddRemoveDelay : 卡片组切换时,添加与移出时,相邻卡片展示动效的间隔时间
- animAddRemoveDuration : 卡片组切换时,添加与移出时,卡片动效时间
11. SlidingRootNav
我们可以认为这个库是像 DrawerLayout 的 ViewGroup,drawer(抽屉) 隐藏在内容视图之下,可以通过改变它们来显示 drawer。REAMDE 很全面,值得一看。

12. PasscodeView
这就是一个你可以键入密码的 view。但非常棒!

13. MusicWave
该库允许将声音表示为彩色梯度变化。

14. ShadowImageView
该库可帮助你为图片添加更有意义的阴影。根据 README ,它的作用是:
此外,它也非常易于使用。

这是一个高效的 Android 实用程序类,用于在 Canvas 上绘制常规的多边形。 我们可以指定:
- 边数(≥3)
- 中心点坐标
- 外接圆半径(从中心到顶点的距离)
- 圆角半径
- 多边形旋转度
- 填充/描边颜色

16. Tiny
这是本列表中的第二个框架。它负责图像压缩,功能相当强大的。还支持

17. ParticleTextView
该库提供了一个自定义的 view 组件,可以用彩色粒子组成指定的文字,并配合多种动画效果和配置属性,呈现出丰富的视觉效果。

18. CropIwa
这是一个高可配置的图像裁剪部件。该库基于模块化结构,因此它的可配置性非常强。你可以从 Github 上的 WiKi 了解如何进行配置。

19. Project Condom
『保险套』是一个超轻超薄的 Android 工具库,将它套在 Android 应用工程里裸露的 Context 上,再传入第三方 SDK(通常是其初始化方法),即可防止三方 SDK 中常见的损害用户体验的行为:
20. AppMethodOrder
一个能让你了解所有函数调用顺序以及函数耗时的 Android 库(无需侵入式代码)。
项目有详细的文件,你可以找到详细的手册了解如何使用它。

21. Android DebugKit
这是一个有趣的库。它允许你创建和使用特殊的悬停调试工具,以触发你在应用程序中定义的操作。这些操作可以在运行时明显的触发,因此可以在编写或测试手机屏幕反馈时间时使用。
该库使用 Builder 模式。 它很容易使用,在 README 中有一个其用法的示例。

22. Aesthetic
这是一个新的库,仍处于测试版,但它做了一件非常酷的事情 – 它通过 Rx 支持动态改变系统主题! 作者是这么描述的:
该库文档非常不错、内容全面,值得一读。

23. EasyCalendar
这是一个简单的自定义日历小插件。 主要功能包括:
- 自定义布局的标题
- 自定义布局的日期
- 显示或隐藏日期的分隔符
- 显示或隐藏溢出的日期
- 监听日期视图的点击操作
该库的文档是全面且易于使用的。

24. SimpleRatingBar
该库提供两个评分栏:
- BaseRatingBar – 没有任何动画
- ScaleRatingBar – 具有渐进和缩放动画
你可以在下面的 gif 图中看到它们的效果:

25. Magellan
这个库被标榜为最简单的 Android 导航库,但你仍然需要自己判断它是否适合自己使用。主要特性:
- 调用 goTo(screen) 方法就能简单实现导航,
- 返回栈完全可控,
- 自动处理过渡。
wiki 上有全面的说明。

它是由 Mark Allison 写的,你可以在他的 Styling Android 博客上获得更多的信息。

27. BlockCanaryEx
这是一个当你的应用程序被阻塞时,它可以方便在代码中找到阻塞的方法的库。它是基于 BlockCanary 的。

28. PaletteImageView
非常酷的一个库,可以动态的提取图片的主要颜色,并将颜色作为图片阴影的控件。

该项目文档较少,但我认为代码是不言自明的。
这是一个打开相机快门的刷新动画。在我看来,真的值得研究,特别是在 README 中有一个关于如何实现这个效果的数学分析!

30. SlimAdapter
这是一种不使用 ViewHolder 来编写适配器的方法。主要功能包括:
- 不包含 ViewHolders
- 没有反射
- 流畅和简单的 API
- 支持多类型适配器
- 支持 Kotlin
- 支持简单的 DiffUtil

以上。希望你喜欢这篇文章! 如果还有在这个春天发布的其他伟大的库我没有提到,请在下面回复让我知道。 让我们一起维护这个列表!
英文原文:The 30 Coolest Android Libraries from Spring 2017
译者:Tocy, 边城, 王练, 总长, tsingkuo
20个帮助提高开发技巧的开源 Android App
学习的最好方法是阅读,对于开发人员也是如此。如果你想成为一个更好的开发人员,你必须阅读更多的代码。就这么简单。
书籍、博客、论坛在某种程度上都是不错的,但一些功能齐全的详解的开源项目依然是无可替代的,整个应用中包含的所有资源都展现在你面前。
所以你需要做的就是坐下来、喝杯咖啡、拜读下很棒的代码。在这篇文章中,我们提供了一些来自各种类别和风格的最好的开源 Android 应用程序,以满足你所有的学习和开发需求。
在深入代码之前,你可以直接从 Play Store 中试用这些应用程序。每个应用程序附带的难度级别将帮助你判断是否应该立即深入了解它或暂时放在一边。
LeafPic
(Github | Play Store | 难度: 入门级)

照片和视频画廊应用是安卓系统最常见的一种应用。有没有想过他们是如何制作的? LeafPic 是最好的开源画廊应用之一,你可以试着使用它学习。
它非常简单,容易理解,而且完全适合任何初学者开发人员。同时我发现这个应用最好的一件事情就是实现了动态主题。这是许多 Android 开发人员难以正确实现的。
Simple Calendar
(Github | Play Store | 难度: 入门级)

一个纯粹使用 Kotlin 开发的又简单又易用的日历应用。如果你想要学习 Kotlin ,这可能是最好的入门方法之一。
这个应用的目标非常简单,就是让你亲力亲为的通过开发 Android 应用来学习一门全新的语言。还有一件更酷的事情就是你能够学习到如何开发一个自定义的 Android 桌面工具。
Amaze File Manager
(Github | [ur=”https://play.google.com/store/apps/details?id=com.amaze.filemanager”l]Play Store[/url] | 难度: 中等)

一个非常常见的安卓文件管理器,你能在几乎所有安卓设备上使用它。
尽管开发一个文件管理器应用初步看起来很简单,但是实际上想要良好地运行在所有安卓平台和设备上是很难的。
从这个应用中你可以学到很多东西,尤其是怎么适当处理 SD 卡中的文件。但是我不建议你遵循这个项目中的编码标准,因为那是没法达到的。
Easy Sound Recorder
(Github | Play Store | 难度: 入门级)

一个简单的、容易使用的、漂亮的安卓录音应用。如果你想要学习一些关于安卓音频记录和操作方面的东西,那么这个项目最适合你了。
这个项目非常小(仅仅只有一个简单的 Activity ),同样也很容易理解。初学者可以从这个项目中学到原质化设计的基础知识。
MLManager
(Github | Play Store | 难度: 入门级)

MLManager 是一个简单直观的安卓设备应用管理器。如果你想要学习一些关于你设备上已安装应用的详细信息,或者是从这些应用中提取 APK 、卸载应用等,那么这个项目是你的理想选择。
这个应用中使用的编码标准很好,应该被遵守。而且遵循它的原质化设计原则,也能给你在设计干净简单的应用时提供一些好点子。
PhotoAffix
(Github | Play Store| 难度: 入门级)

这个一个设计很简洁的应用,它能够水平或垂直地拼接照片。是不是听起来很简单?确实如此。
对于任何想要学习安卓开发基础的初学者来说,这是一个理想的项目。它的编码标准是一流的,而且是我心中最好的开发实践。
通过这个项目你还可以学习实现一些简单有用的自定义视图,为你打好基础,以便将来设计更复杂的视图。
MovieGuide
(Github | 难度: 中等)

这个应用的功能相当简单,就是列出所有流行电影的预告片和评论,但是这个项目真正有趣的地方是它的实现方式。
这个应用展示了一些非常棒的开发项目,像 MVP、Bob 的 Clean Architecture、Dagger 2 实现的依赖注入,和 RxJava 。
这个应用程序非常简单,但实现方式非常棒,绝对值得一看。
AnExplorer
(Github | | Play Store | 难度级别:中等)

另一个简单、轻量级和简约的文件管理器,专为手机和平板电脑设计。
从这个项目中可以学到很多事情,比如文件处理、root权限管理、装载程序、自定义视图等。 它内部代码设计良好,你不需要花费太多时间来掌握其内部发生的事情。
Minimal ToDo
(Github | Play Store | 难度: 入门级)

对于一个初学者,这是一个可以用来试水的项目,它非常简单而且很酷。 通过这个项目您将有机会了解安卓开发的大部分基础。
作为初学者的良好起点,这个应用程序的设计是非常得体的。 但是不要遵循它的编码标准和打包结构,因为它们不符合标准,应该避免使用。
Timber
(Github | Play Store | 难易程度: 高级)

Timber 是一款设计精美、功能齐全的 Android 音乐播放器。如果你想要建立自己的音乐播放器或任何音乐相关的应用程序,那么这是你需要查看的项目。
该项目规模相当大,正处于密集开发状态。对于初学者来说,掌握所有代码可能会有点困难,但对于任何中级或高级 Android 开发人员来说,这应该是非常有趣的。
AnotherMonitor
(Github | Play Store | 难度等级: 中等)

如果你想了解如何监控 Android 进程、内存使用情况、CPU 使用情况以及与之相关的部分,那么这就是开始学习的完美项目。
它的规模比较小并且很容易理解,但编码规范、之后的架构和总体设计并不符合规范,不宜参考。
InstaMaterial
(Github | 难度: 入门级)

如果您正在寻找一个项目来学习或提高您的材料设计语言(Material Design)技能,那么这个很合适。 该项目试图用材料设计语言复制 Instagram 应用程序的部分内容。
在这个应用中使用了大量的材料设计语言元素、动画和过渡效果,您可以在自己的项目中学习和实现。
它非常简单,易于理解,非常适合任何想要提高设计技能的 Android 开发人员。
CoCoin
(Github | 难度级别: 简单)

CoCoin 是一个详尽的个人财务和记账解决方案,运行在一个干净漂亮的用户界面之上。
如果你想了解如何正确管理大量的用户数据,并从这些数据中绘制漂亮的图表,制作一些很酷的自定义视图,那么这个开源仓库就是为你而设的。
OmniNotes
(Github | Play Store | 难度: 中等)

如果您正在建立一个功能齐全的,类似 Evernote 笔记本的 Android 应用程序,那么用它开始是个正确的决定。
该项目有相当多的功能,如共享和搜索笔记、附加图像、视频、音频、草图、添加提醒功能等等。
您可以从这个项目中学到的另一件很酷的事情是将您的应用程序与 Google Now 无缝集成。
Clip Stack
(Github | Play Store | 难度级别: 入门级)

Android 上一个简单、干净和优美的剪贴板管理器应用。该项目相当小,同时简单易懂。
但是,本项目中所使用的包结构、架构、命名约定和编码规范并不符合标准。它是按照一个非常简单和初学者友好的方式来构建的。
Super Clean Master
(Github | 难度级别: 高级)

如果你曾使用过 Android 设备,那么肯定需要从设备中清理一些垃圾数据。 Clean master 是全球最受欢迎的选择之一。
这个应用程序,顾名思义,尝试以非常干净和优雅的方式模拟 Clean Master 的大部分功能。但整体项目有点复杂,可能需要花一点时间来理解所有的代码。
Travel Mate
(Github | 难度: 中等)

如果您正在寻找构建基于旅行的应用程序,并且需要大量依靠位置和地图,那么这个项目可能是最好的起点。
该应用程序的设计和代码质量尚未达到标准,但总体设计非常好,有很多东西值得一些初学者甚至中级 Android 开发人员来学习。
KISS
(Github | Play Store | 难度:中等)

一个简单、超快速、轻便的 Android 应用。可以从这个项目中学到的几个很酷很漂亮的功能。
所以如果你想制作 Android 的启动器,这可能是最好的开始。该应用程序相当小,并且该项目也是相当简单的。
Turbo Editor
(Github | Play Store | 难度: 中等)

一个简单但功能强大的 Android 编辑器应用程序。 您当然也可以使用此编辑器编写代码,并支持不同编程语言的语法高亮。
我甚至尝试打开大文本文件,大多数应用都崩溃或打开失败了,这个应用则相当优雅地处理了它们。 从这个项目,您将有机会学习制作一个非常可靠和强大的文本(或代码)编辑器应用。
Wally
(Github| 难易程度: 入门级)

Android 上快速、简单和高效的壁纸应用程序。这个项目有很多可学习的东西,尤其是对于初学者。
在应用中使用的架构相当不错,这使得该应用很容易扩展和维护。这个应用的目标非常简单,但是为实现这个目标而采取的方法是值得借鉴的。
Pedometer
(Github | 难易程度: 入门级)

一个简单、轻量级的计步器应用程序,它使用硬件传感器来计算步数,这对电池性能几乎没有什么影响。
这是一个开始学习步数跟踪的好项目,但是编码标准和设计不够好,不建议参考。
我已经分享了几种来自各种渠道的开源 Android 应用程序,以满足几乎所有人的需求。 还有适合各类 Android 开发者的应用程序,难度从入门级到更专业的。
我希望你会发现这些开源项目真的很有用。 本文最初发布在TechBeacon上。
译文:20+ Awesome Open-Source Android Apps To Boost Your Development Skills
JetBrains IntelliJ IDEA Ultimate 2006/ 2017.1.1 / 2017.1.2 Crack
How to crack
1.Install the latest version of IntelliJ IDEA (v2016 v2017.x.x)
2.Start it
3.When you have to enter the license, change to [License server]
In the Server URL input field enter: http://idea.strongd.net/ . For older Servers, check out the bottom of the page, they are all listed
4.Click on [Ok] and everything should
5 Steps to Take Care of Your MongoDB Performance
Do you face some performance issues in your MongoDB setup?
In this case follow these steps to provide some first aid to your system and gain some space for a long term architecture (such as Sharding).
Step 1: Enable Slow Queries
Get intelligence about your system behavior and performance bottlenecks. Usually there is a high correlation between the slow queries and your performance bottleneck, so use the following method to enable your system profiling collection:
db.setProfilingLevel(1, 100);
Step 2: Use Explain
Explore the problematic queries using explain. You can also use mtools to analyze the logged queries to find high frequent ones.
Step 3: Create Indexes
Your analysis should result with new indexes in order to improve the queries
Don’t forget to use index buildup in the background to avoid collections locking and system downtime.
Step 4: Use Sparse Indexes to Reduce the Size of the Indexes
If you use sparse documents, and heavily using the $exists key words in your queries, using sparse indexes (that includes only documents that includes your field) can minimize your index size the boost your query performance.
Step 5: Use Secondary Preferred to Offload Queries to Slaves
You probably have a replica set and it’s waste of resources not using your slaves for read queries (especially for reporting and search operations).
By changing your connection string to secondary preferred, your application will try to run read queries on the slaves before doing that on your master.
Bottom Line
Using these simple methods, you can gain time and space before hitting a wall.
How-To: Install Google’s Android Eclipse Plugin (And/or Adb) on 64-bit Debian/Ubuntu
Today I had to reinstall the Android plugin on my system and I recently upgraded to a 64-bit development VM. To my surprise the installation didn’t go smoothly at all. After restarting Eclipse twice I was constantly presented with two error messages “Failed to parse the output of ‘adb version’” and “adb: error while loading shared libraries: libncurses.so.5: cannot open shared object file: No such file or directory”. Your system may also present another error message that reads “adb: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory”.
I could see that it was looking for libncurses.so.5 however I know that ncurses is already installed on my machine in /lib as /lib/libncurses.so.5. So where exactly was Eclipse/adb looking for it? It turns out that it wants to find its libraries in the /lib32 directory but you can’t just symlink it or you’ll get an error that reads “wrong ELF class: ELFCLASS64”. adb needs to have the 32-bit versions installed or it won’t function at all.
So to get up and running just run the following command to fix the issue:
sudo apt-get install lib32ncurses5 lib32stdc++6
After that just restart Eclipse and the issue should be fully put to bed. Let me know how it works out for you or if you run into trouble.
If you still run into trouble like an error message that reads “aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory” you need to install the ia32-libs like this:
sudo apt-get install ia32-libs
Then rebuild your project and the errors should be gone.
UPDATE 2012-02-14: Rortian reports that the following command words on Fedora 16:
yum install ncurses-libs.i686 libstdc++.i686 libgcc.i686
免费的Android UI库及组件推荐
短短数年时间Android平台就已经形成了一个庞大而活跃的开发者社区。许多社区开发的项目业已进入成熟阶段,甚至可以用于商业的软件生产中,且不用担心质量问题。
本文编译自androiduipatterns,意在分享一些免费、开源的Android UI库及组件资源。
一、UI组件库
1. GreenDroid
该项目可以实现下列的UI设计:
- 动作栏(Action Bar)
- 快捷动作(Quick Action)
- 工作区(Workspace)
- 动态列表(Dynamic List)
以及许多更有用的组件。
2. ActionBarSherlock
在Google针对手机的动作条API推出前,该项目一直与ICS一起使用。Jake最近将项目拓展到了动作条之外。这里也有针对工作区等的组件。
3. Android Compatibility Package
这是一个来自Google Android库的官方扩展。Compatibility Package顾名思义就是Android官方针对旧平台版本所不支持的API或是Android Framework没有提供的函数库,将其打包发布。它包含了许多非常有用的API。该包同样包含工作区UI设计的实现。
二、UI组件
1. iosched
这是一个官方的Google I/O的应用(同样可用在GDD,Google Developer Day)(注:Google I/O是Google每年都会举办的历时两天的开发者大会,该大会谈及各种技术问题。开发人员会提供非常多的示例来展示他们的技术。这个项目专门为了这个会议提供了一个Android应用程序。)。该应用程序实现了大量的UI设计,成为Google Android设备拥护者的参考标准。强烈推荐使用该应用程序的仪表盘UI设计模式。(Google代码链接:Dashboard.java)
项目网站:http://code.google.com/p/iosched/
2. Android-Viewflow
该项目的工作区UI设计模式与Google Docs所使用非常相似。
项目网站:https://github.com/pakerfeldt/android-viewflow
3. android-coverflow
该项目可以用于完成一个cover flow。在这个项目网站的视频中可以得到更多的信息。
项目网站:http://code.google.com/p/android-coverflow/
4. android-viewbadger
该项目让devs无需修改布局文件(layout file)即可显示badges。
项目网站:https://github.com/jgilfelt/android-viewbadger
5. android-pulltorefresh
该项目实现动态列表/下拉刷新(pull to refresh)的UI设计。
项目网站:https://github.com/johannilsson/android-pulltorefresh
6. Android-ViewPagerIndicator
该项目可以用于实现工作区的UI设计。
VIA http://www.androiduipatterns.com/2011/10/free-android-ui-library-component.html
Android模拟器镜像文件介绍
. Android模拟器采用的是开源工程Qemu,Qemu是Linux 下的著名模拟器
2. kernel-qemu是内核镜像
3. ramdisk.img是文件系统,如果你自己编译了android的源代码,它的内容为
out/debug/target/product/generic/root,mount到android的/
4. system.img主要存放系统数据,android启动后mount到/system
它包含的内容为out/debug/target/product/generic/system
5. 一般来说我们不直接使用userdata.img,而是使用userdata_qemu.data,用来存放用户数据,可读写,android启动后mount到 /data。只有使用-wipe-data参数启动模拟器是时候才会用到userdata.img,它会使用userdata.img的内容覆盖 userdata-qemu.img
userdata.img的内容为out/debug/target/product/generic/system
6. 如果您没有编译android的源代码,我们也可以知道ramdisk.img、system.img和userdata.img的内容。
1). 查看ramdisk.img内容
terminal中进入sdk的images目录,执行file *

我看可以看到ramdisk是一个gzip文件,我们可以解压这个gzip文件,解压前先备份一下
然后在terminal中运行
localhost:images wuvincent$ gzip -d -S .img ramdisk.img
然后运行
localhost:images wuvincent$ file ramdisk
执行后会显示这个文件是一个cpio文件,于是我们可以把它解压到一个目录下,依次执行如下命令
localhost:images wuvincent$ mkdir ramdiskdir
localhost:images wuvincent$ cd ramdiskdir
localhost:ramdiskdir wuvincent$ cpio -idmv <../ramdisk
我们就可以进入ramdiskdir看到ramdisk.img的内容了。
其中最主要的几个文件时init init.rc init.goldfish.rc
2). 查看system.img和userdata-qemu.img內容
terminal中進入sdk的tools目錄下運行adb shell
localhost:tools wuvincent$ adb shell
adb server is out of date. killing…
* daemon started successfully *
#
然後運行cd /和ls -l,執行結果如下:

我們可以看到ramdisk.img mount到/,init init.rc init.goldfish.rc都在/目錄下。
而/system就是system.img mount後的目錄,/data 就是userdata-qemu.img mount後的目錄,大家可以進入看看內容。
我們也可以在terminal中運行mount命令查看文件系統mount情況。
原文:http://www.devdiv.com/home.php?mod=space&uid=1&do=blog&id=1488
android:SQLite数据库 增、删、改、查
学习android开发不可避免的会涉及数据库的使用,android使用的是SQLite数据库。对于SQLite数据库的基本信息这里就不过多的介绍,我们主要看哈是怎么用的就是了。
与以往数据库不一样的地方
以前我们做javaWeb开发时用jdbc连接,现在变了,个人觉得变得简单了。在应用程序中直接就可以去创建数据库,然后对其进行操作。不用像以前写连接代码。
操作数据库
一,SQLiteOpenHelper 类
其中:
getReadableDatabase()得到可读的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。
getWritableDatabase()得到可写的数据库,返回SQLiteDatabase对象,然后通过对象进行数据库操作。
onCreate(SQLiteDatabase db)在第一次创建数据库时调用。
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)在更改数据库时都会调用。
onOpen(SQLiteDatabase db)当数据库打开时调用。
close()关闭数据库。
二,SQLiteDatabase类
这个类提供了对数据库的一些基本操作:
insert()
delete()
update()
query()
。。。。。等等。
代码:
SQLiteOpenHelper 的子类:
- import android.content.Context;
- import android.database.sqlite.SQLiteDatabase;
- import android.database.sqlite.SQLiteDatabase.CursorFactory;
- import android.database.sqlite.SQLiteOpenHelper;
- /**
- * 通过getReadableDatabase()和getWritableDatabase()可以获得数据库对象。
- * 提供onCreate()-创建数据库时,onUpgrade()-升级数据库时,两个回调函数。
- */
- public class DatabaseHelper extends SQLiteOpenHelper {
- // 按要求必须要有构造函数
- public DatabaseHelper(Context context, String name, CursorFactory factory,
- int version) {
- super(context, name, factory, version);
- }
- // 当第一次得到SQLiteDatabase对象时,调用该方法
- @Override
- public void onCreate(SQLiteDatabase db) {
- String sql = “create table MSG(id int,body varchar(100))”;
- db.execSQL(sql);
- System.out.println(“创建了一个数据库!”);
- }
- // 当更新数据库时执行该方法
- @Override
- public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
- System.out.println(“更新了数据库!”);
- // 还可以写其他的操作
- }
- }
有了这个类后,我们就可以对数据库进行增、删、改、查操作了。
插入数据:
- //生成ContentValues对象,key:列名,value:想插入的值
- ContentValues values = new ContentValues();
- values.put(“id”, 1);
- values.put(“body”, “hello”);
- DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, “text_msg”, null, 2);
- //得到可写的SQLiteDatabase对象
- SQLiteDatabase db = dbhelper.getWritableDatabase();
- //调用insert方法,将数据插入数据库
- //参数1:表名
- //参数2:如果你想插入空值,那么你必须指定它的所在的列
- db.insert(“MSG”, null, values);
- System.out.println(“插入了:1, hello”);
删除数据:
- DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, “text_msg”, null, 2);
- //得到可写的SQLiteDatabase对象
- SQLiteDatabase db = dbhelper.getWritableDatabase();
- //调用delete方法,删除数据
- db.delete(“MSG”, “id=?”, new String[]{“1”});
- System.out.println(“删除了:id=1”);
修改数据:
- ContentValues values = new ContentValues();
- values.put(“body”, “my dear!”);
- DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, “text_msg”, null, 2);
- //得到可写的SQLiteDatabase对象
- SQLiteDatabase db = dbhelper.getWritableDatabase();
- //调用insert方法,将数据插入数据库
- //参数3:where 子句 “?”是占位符号,对应后面的”1”,这和web开发时的语法是一样的
- db.update(“MSG”, values, “id=?”, new String[]{“1”});
- System.out.println(“更新了:hello–>my dear!”);
查询数据:
- DatabaseHelper dbhelper = new DatabaseHelper(SqliteActivity.this, “text_msg”, null, 2);
- //得到可读的SQLiteDatabase对象
- SQLiteDatabase db = dbhelper.getReadableDatabase();
- //参数1:表名
- //参数2:要想显示的列
- //参数3:where子句
- //参数4:where子句对应的条件值
- //参数5:分组方式
- //参数6:having条件
- //参数7:排序方式
- Cursor cursor = db.query(“MSG”, new String[]{“id”,”body”}, “id=?”, new String[]{“1”}, null, null, null);
- System.out.println(“查到的数据为:”);
- while(cursor.moveToNext()){
- int id = cursor.getInt(cursor.getColumnIndex(“id”));
- String name = cursor.getString(cursor.getColumnIndex(“body”));
- System.out.println(“–>”+id+”::::::::::”+name);
- }
怎样使用adb查看数据库?
SQLite没有客户端,不能直接的查看数据库,所以用它提供的adb吧。
1,进入命令行后输入adb回车,会显示很多的信息。
2,输入adb shell回车,就进入了Linux命令行,现在就可以使用Linux的命令了。
3,ls回车,显示所有的东西,其中有个data。(ls:显示所有,cd:进入)
4,cd data回车,再ls回车,cd data回车,ls回车后就会看到很多的com.。。。的东西,那就是机器上的应用程序,找到你应用程序的包名,然后进入。
5,进去后在查看所有,会发现个databases,进入databases,显示所有就会发现你的数据库名字,我这里使用的是”text_msg”。
6,sqlite3 text_msg回车就进入了你的数据库了,然后“.schema”就会看到该应用程序的所有表及建表语句。
7,现在你就可以使用标准的SQL语句查看刚才生成的数据库及数据了。
对数据库的操作方法很多,这只是其中一种。
原文地址:http://blog.csdn.net/zzy916853616/article/details/6599898