- 浏览: 1008503 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (367)
- JavaScript (23)
- Java (60)
- Python (41)
- 其他 (36)
- SQL (4)
- 开发工具 (26)
- Linux (15)
- AJAX (6)
- Cache (3)
- 正则 (4)
- 架构 (9)
- 手机 (3)
- MySQL (4)
- Android (115)
- vps (1)
- 网站 (4)
- scale (3)
- 搜索引擎 (3)
- iPhone (2)
- hessian (1)
- hessdroid (1)
- 411 (1)
- jstat (1)
- gc (1)
- gallery (1)
- 惯性 (1)
- eclipse (1)
- mac wget error (1)
- miui file explorer 无用 解决办法 (1)
- vim (1)
最新评论
-
qingyezhangluo:
哎。楼主您既然是分享代码的为什么要加密的呢?而且问你密码还不回 ...
android应用换皮肤(转) -
MagicError:
kavoe 写道下载文件有密码。。。。
http抓包工具 -
knightdf:
我先试下再来
JAVA的RAS加密例子 -
kavoe:
下载文件有密码。。。。
http抓包工具 -
changanfounder:
hmc1985 写道setCallbackDuringFlin ...
android gallery滑动惯性问题
为了突出 Android 应用程序开发的本地存储方面,我这里介绍一个样例应用程序,它允许您测试各种类型 API 的执行。有 源代码 可供下载。该应用程序支持 图 1 中的操作。 图 1 列出了以下用例: 通篇文章中,详细介绍了在应用程序中使用本地存储,如下: 样例应用程序定义了 表 1 中的类。
类
说明
MainActivity
Main Activity;大多数样例代码都驻留在这里
Friend
描绘一个 Friend
AppPreferenceActivity
Preferences Activity 和屏幕
DBHelper
一个用于 SQLite 数据库管理的帮助器类
示例应用程序使用了两种类型的数据。第一种是应用程序首选项,存储为名-值对。对于首选项,定义了以下信息:
- 一个 filename,用于加载和存储好友姓名列表
- 一个 filename,用于加载和存储用户的一幅图片
- 一个 flag,如果设置了,那么表示在应用程序启动时自动删除所有已存储的数据
第二种类型的数据是好友列表。好友列表最初表示为 Facebook Graph API JSON 格式,包含一组姓名和好友对象(参见 清单 1)。
清单 1. 好友列表(Facebook Graph API JSON 格式)
{ "data": [ { "name": "Edmund Troche", "id": "500067699" } ] } |
上面的简单格式使得 Friend
对象和数据库模式也简单。清单 2 展示了 Friend
类。
package com.cenriqueortiz.tutorials.datastore; import android.graphics.Bitmap; /** * Represents a Friend */ public class Friend { public String id; public String name; public byte[] picture; public Bitmap pictureBitmap;; } |
除了 ID 和姓名之外,样例应用程序也保留了对好友图片的引用。尽管样例应用程序没有使用这些引用,但是您很容易扩展样例应用程序,以从 Facebook 检索图片并显示在主屏幕中。
数据库模式包含单个表,用于存储 Friend 的信息。表有三列:
- 惟一的 ID 或键
- Facebook ID
- Friend 的姓名
清单 3 展示了相应关系表声明的 SQL 语句。
db.execSQL("create table " + TABLE_NAME + " (_id integer primary key autoincrement, " + " fid text not null, name text not null) "); |
根据此信息,您可以在主屏幕上显示姓名;使用 ID,您可以检索所选用户的额外详细信息。在样例应用程序中,只显示了姓名。检索额外信息留给您去试验。注意,您很容易更改代码,以直接转向 Facebook。
本节介绍 Preferences API 和屏幕。Android API 提供很多方式处理首选项。其中一种方式是直接使用 SharedPreferences
,并使用您自己的屏幕设计和首选项管理。第二种方法是使用 PreferenceActivity
。PreferenceActivity
自动负责首选项如何呈现在屏幕上(默认情况下,看起来跟系统首选项一样),并通过使用 SharedPreferences
在用户与每个首选项交互时自动存储或保存首选项。
为了简化样例应用程序,使用一个 PreferenceActivity
来管理首选项和首选项屏幕(参见 图 2)。首选项屏幕显示两个部分:Assets 和 Auto Settings。在 Assets 下,您可以为 Friends List 和 Picture 选项输入文件名。在 Auto Settings 下,您可以选中一个复选框,以便在启动时删除信息。
在 图 2 中,布局是用 XML 以声明式方法定义的(不是以编程方式);声明式 XML 是首选方法,因为它保持了源代码的清晰可读。清单 4 展示了 Preferences UI 的 XML 声明。
<?xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/prefs_screen" android:key="preferencescreen" > <PreferenceCategory android:title="Assets"> <EditTextPreference android:key="@string/prefs_assetname_friendslist_key" android:title="Friends List" android:summary="Please enter filename" android:defaultValue="friends.txt" /> <EditTextPreference android:key="@string/prefs_assetname_picture_key" android:title="Picture" android:summary="Please enter filename" android:defaultValue="pict2.jpg" /> </PreferenceCategory> <PreferenceCategory android:title="Auto Settings"> <CheckBoxPreference android:key="@string/prefs_autodelete_key" android:title="Delete at Startup" android:summary="Check to clear at startup" android:defaultValue="false" /> </PreferenceCategory> </PreferenceScreen> |
PreferenceScreen
包含 EditTextPreference
的两个实例、一个 CheckBoxPreference
和两个由 PreferenceCategory
定义的类别组(一个用于 Asset
,另一个用于 Auto Settings
)。
在样例应用程序中,设计要求 Preference 屏幕使用菜单项进行调用。为此,使用一条 Intent 消息来调用叫做 AppPreferenceActivity
的 Preference Screen Activity(参见 清单 5)。注意,我没有详细介绍 Intent 如何工作。关于 Intent 的更多信息,请参见 参考资料。
/* * AppPreferenceActivity is a basic PreferenceActivity * C. Enrique Ortiz | http://CEnriqueOrtiz.com */ package com.cenriqueortiz.tutorials.datastore; import android.os.Bundle; import android.preference.PreferenceActivity; public class AppPreferenceActivity extends PreferenceActivity { /** * Default Constructor */ public AppPreferenceActivity() {} /** * Called when the activity is first created. * Inflate the Preferences Screen XML declaration. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); addPreferencesFromResource(R.xml.prefs); // Inflate the XML declaration } } |
在样例应用程序中,像 清单 6 中一样,从菜单项处理程序中调用 Intent。
清单 6. 使用 Intent 调用 Preference Activity
/** * Invoked when a menu item has been selected */ @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { // Case: Bring up the Preferences Screen case R.id.menu_prefs: // Preferences // Launch the Preference Activity Intent i = new Intent(this, AppPreferenceActivity.class); startActivity(i); break; case R.id.menu...: : break; } return true; } |
此外,您必须在 AndroidManifest XML 文件中定义所有的 Intent,如 清单 7 所示。
清单 7. 在 AndroidManifest.xml 中定义 Intent
: <application android:icon="@drawable/icon" android:label="@string/app_name"> : : <activity android:name="AppPreferenceActivity" android:label="Preferences"> </activity> : </application> |
回想一下,PreferenceActivity
使用 SharedPreferences
在用户与首选项屏幕交互时自动存储首选项。然后应用程序在执行各种任务时使用这些首选项。清单 8 展示了如何直接使用 SharedPreferences
来加载存储的首选项;关于加载的首选项在整个样例代码中是如何被使用的,您可以参考相应的样例代码。此外,清单 8 也展示了如何利用 SharedPreferences
直接存储首选项,以防您喜欢自己管理首选项(不是通过 PrefenceActivity
),使用了一个 Editor
。
清单 8 展示了如何使用 SharedPreferences
加载已存储的首选项,以及如何使用 Editor
更改已存储的首选项。
///////////////////////////////////////////////////////////// // The following methods show how to use the SharedPreferences ///////////////////////////////////////////////////////////// /** * Retrieves the Auto delete preference * @return the value of auto delete */ public boolean prefsGetAutoDelete() { boolean v = false; SharedPreferences sprefs = PreferenceManager.getDefaultSharedPreferences(appContext); String key = appContext.getString(R.string.prefs_autodelete_key); try { v = sprefs.getBoolean(key, false); } catch (ClassCastException e) { } return v; } /** * Sets the auto delete preference * @param v the value to set */ public void prefsSetAutoDelete(boolean v) { SharedPreferences sprefs = PreferenceManager.getDefaultSharedPreferences(appContext); Editor e = sprefs.edit(); String key = appContext.getString(R.string.prefs_autodelete_key); e.putBoolean(key, v); e.commit(); } |
接下来,将介绍如何使用数据库来存储数据。
未完待续
感谢:http://hi.baidu.com/304580500/blog/item/04a246534690f51a0df3e37a.html
发表评论
-
android屏幕适配
2012-11-16 17:24 2188屏幕适配一直是一个让人头疼的问题,论坛上讨论这个问题的最后也 ... -
禁止Eclipse中xml文件Run as的XSL Transformation生成out.xml以方便Android应用开发
2012-08-26 21:38 2632可以在Eclipse里面配置,菜单Windows->P ... -
android 自带的主题 theme 的使用
2012-08-25 23:21 2369在android的sdk 安装目录data\r ... -
android 如何判断程序是否在前台运行
2012-04-06 00:04 3096private boolean isTopActiv ... -
用代码如何检测一个android程序是否在运行
2012-04-05 23:07 3736<uses-permission android:na ... -
Android-TextView多行本文滚动轻松实现
2012-03-04 19:37 1314TextView tvAndroid123 = (T ... -
让背景模糊的效果
2012-03-04 16:22 2618设置透明度(这是窗体本身的透明度,非背景) Wi ... -
Android 使用shape
2012-03-04 16:14 1047刚刚翻论坛的时候看到的,总觉得以后会用的上这些零零碎碎 ... -
关于android中使用很多大图片的一些做法
2012-02-29 00:11 1443最近在xoom上开发应用,碰到ui设计都是使用图片,而 ... -
屏幕尺寸和像素密度的资源限定符
2012-02-23 15:31 1603屏幕尺寸和像素密度的资源限定符 以下是可以用来为 ... -
android开发之gallery 实现滚动一张且短距离滑动实现滚动
2011-12-19 18:50 1925首先gallery的特点就不用多说了吧,惯性滚动、半屏翻页,但 ... -
下拉刷新
2011-10-14 15:09 1169要实现这种效果 可以参见这里https://git ... -
android应用换皮肤(转)
2011-10-12 14:36 3195看到好多人在问题与解答里面都问怎么换肤,搜了一下论坛里面好像没 ... -
Android签名到底都有哪些作用?
2011-10-09 17:59 2297所有的Android应用程序都要求开发人员用一个证书进 ... -
Android 动态切换全屏和非全屏模式
2011-10-08 15:15 3470直接贴出代码: Java代码 ... -
Android开发——利用Cursor+CursorAdapter实现界面实时更新(转)
2011-09-20 15:47 3077好久没有更新博客了 ... -
Nginx使用反向代理时 Hessian 的 411 错误解决方案【转】
2011-09-15 13:48 2357问题描述: 用 Hessian 实现 web se ... -
Android 本地数据存储 API(二)(转)
2011-05-18 14:23 1979使用 SQLite 数据库 Android 通过 S ... -
Android 本地数据存储 API(三)(转)
2011-05-18 14:22 2561为私有数据使用设备的内部存储器 有了数据存储 API ... -
Android中读写文件(转)
2011-05-18 14:21 7167android中读写文件分两部 ...
相关推荐
"android电话录音软件源码" 提供了一种实现这一功能的解决方案,允许用户在通话过程中录制声音,并将录音文件存储在本地或者上传至远程服务器。 首先,我们来看一下核心知识点: 1. **权限管理**:在Android系统中...
在Android系统中,SD卡被广泛用作外部存储设备,用于存储应用程序数据、媒体文件等。 **SD卡特性:** - **高速读写:** 支持高速数据传输。 - **容量范围广:** 从几百MB到几百GB不等。 - **安全性:** 支持密码...
例如,它可能会使用到`Activity`、`Intent`、`BroadcastReceiver`等基础组件,以及`SQLite`数据库进行本地数据存储。同时,它利用`AsyncTask`进行异步任务处理,保证了用户界面的流畅性。 3. **网络通信技术** K9-...
总之,这个项目是一个学习Android应用开发的好资源,特别是对于那些想深入理解Android Studio工作流程、网络请求处理、数据存储以及UI设计的初学者。通过分析和修改源码,开发者可以提升自己的编程技能,了解如何将...
**LinkChat:基于Wifi AP的Android共享平台** `LinkChat`是一个专为Android设备设计的共享平台,它利用了Wi-Fi直连(Wi-Fi Direct)技术来实现设备间的快速、直接的数据交换。Wi-Fi Direct是一种无线连接技术,允许...
11. **网络编程**:理解Android中的网络访问限制,如AsyncTask、IntentService或使用现代的Retrofit、OkHttp库进行异步请求。 12. **权限管理**:了解Android的运行时权限系统,如何在Marshmallow及以上版本请求...
BitmapFun.zip 文件是一个与 Android 和 Java 开发相关的资源包,主要包含了用于图像处理和展示的类和资源。...对于想要深入理解Android图像处理和应用架构的开发者来说,BitmapFun.zip是一个很好的学习资源。
此外,还需要处理数据存储问题,可能使用SQLite数据库或文件系统来保存扫描记录。 在实际使用中,【WiFi扫描器】可以帮助用户定位网络问题。例如,如果发现家中的WiFi信号在某些区域较弱,可以利用应用记录的数据...
5. **数据持久化**:SQLite数据库用于本地数据存储,学习如何创建表、插入、查询和更新数据是必需的。另外,还可以考虑使用Room库来简化操作。 6. **网络通信**:使用Retrofit或OkHttp进行API调用,获取远程服务器...
这个项目为学习者提供了一个很好的机会,不仅能够实践Java编程,还能深入理解Android应用开发的全貌,包括用户体验设计、数据管理、网络通信等多个方面。通过参与这样的项目,开发者可以提升自己的编程技巧,增强...
在实际开发中,开发者首先会设计数据库模型,包括商品、用户、订单等实体,并使用Room将这些数据存储在本地。接着,通过Retrofit与后台服务器交互,获取商品列表、用户信息以及处理订单支付。在UI设计上,可能会采用...
3. **离线数据库**:为了实现离线搜索和路径规划,可能需要构建一个本地数据库来存储地理信息和道路数据。这可能涉及到SQLite或其他轻量级数据库技术的使用。 4. **平台适配**:uniAPP是一个跨端开发框架,支持快速...
- **SQLite**:用于更复杂的数据存储需求。 - **Cordova插件**:如`cordova-plugin-sqlite2`用于支持SQLite数据库。 ##### 第十一课:获取数据,Observable和Promise - **HTTP客户端**:Angular提供的HttpClient...
在Android开发中,ListView和Layout是两个至关重要的组件,它们被广泛用于构建用户界面,特别是在创建数据密集型应用时,如“HelloNotes”这样的备忘录应用。本篇将深入探讨这两个组件以及如何利用它们来实现存储...
"AP-HW:我把我的 comp sci hw 放在哪里"这个标题暗示了一个关于如何存储和管理计算机科学作业的问题,可能是一个学生在寻找最佳的实践方法。在描述中提到的“接入点硬件”可能是指用于访问或传输文件的设备或网络...
在IT行业中,Amazon Web Services(AWS)是全球领先的云服务提供商,其S3...理解S3的基础知识和如何使用此类工具是掌握云存储管理和数据处理的关键技能,对于任何在AWS环境中工作的IT专业人员来说都是必不可少的。
uni-app提供了丰富的组件库和API,如`uni.getStorageSync`进行本地存储操作,`uni.showActionSheet`展示操作菜单,`uni.scanCode`调起扫码功能等。 7. **uniappTest项目** - 压缩包中的"uniappTest"可能是一个实际...