編輯:Android開發實例
android中apk中的信息保存主要有四種方式,SharedPreferences、File(Properties)、Network、SQLite
SharedPreferences:保存apk中的一些配置信息或者用戶信息,采用鍵值對方式保存,保存的數據類型只能是一些基本數據類型(int、string、boolean..)
今天的demo就是利用SharedPreferences保存歷史用戶的基本信息,在登錄界面內,將歷史用戶信息綁定在AutoCompleteTextView中,實現google搜索條的自動提示功能。
第一步:打開登錄界面,加載所有歷史用戶信息,每一個用戶信息用UserInfo對象保存
代碼
public class UserInfo{
private String name="";
private String pwd="";
private boolean isRemember=false;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
。。。。。
}
開始的時候想讓Properties保存List<UserInfo>對象,但是Properties好像也只能保存一些基本數據類型,所以沒辦法退而求其次,將所有的用戶信息保存到String中,格式為:name1/pwd1/isRemember1,name2/pwd2/isRemember2,name3/pwd3/isRemember3。保存方式確定下來後就可以加載資源了
代碼
SharedPreferences settings=this.getPreferences(Activity.MODE_PRIVATE);
String userinfos = settings.getString(PREF_USERINFO, "");//獲得用戶字串
if(userinfos!=""){
usernames=new ArrayList<String>();//AutoCompleteTextView的數據源
List<UserInfo> li=new ArrayList<UserInfo>();//用於保存用戶列表信息
if(userinfos.contains(",")){
String[] users=userinfos.split(",");
for(String str : users){
UserInfo u = new UserInfo();
String[] user=str.split("/");
u.name=user[0];
u.pwd=user[1];
u.isRemember=Boolean.parseBoolean(user[2]);
usernames.add(user[0]);
li.add(u);
}
}else{
UserInfo u = new UserInfo();
String[] user=userinfos.split("/");
u.name=user[0];
u.pwd=user[1];
u.isRemember=Boolean.parseBoolean(user[2]);
usernames.add(user[0]);
li.add(u);
}
return li;
}else{
return null;
}
第二步:配置AutoCompleteTextView數據源,也就是上面得到的List<String> usernames;
代碼@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
// TODO Auto-generated method stub
Log.v(tag, "-----------item selected");
String name=this.actname.getText().toString().trim();
for(UserInfo user : list){//循環用戶信息列表,根據用戶名找到對應的詳細用戶信息
if(user.getName().equals(name)){
String pwd=user.getPwd();
boolean bl=user.isRemember();
etpwd.setText(pwd);
ckremember.setChecked(bl);
return;
}
}
}
第三步:保存用戶信息
先檢查是否存在相同用戶信息,更新用戶列表(list)信息
代碼
//檢查是否包含此用戶名
public void checkUser(){
String uname=actname.getText().toString().trim();
String pwd=etpwd.getText().toString().trim();
boolean bl=ckremember.isChecked();
int position=0;
for(int i=0;i<list.size();i++){
if(list.get(i).getName().equals(uname)){
position=i;
break;
}
}
if(position>=0){//已存在
list.remove(position);
}
UserInfo u=new UserInfo();
u.setName(uname);
u.setPwd(pwd);
u.setRemember(bl);
list.add(u);
}
將最終用戶信息一條一條保存
代碼//保存用戶信息
private void saveUserInfo(){
checkUser();//檢查是否已存在相同用戶信息
SharedPreferences settings=this.getPreferences(Activity.MODE_PRIVATE);
String userinfos = "";
for(UserInfo user : list){//最終保存的用戶信息都在list中
String uname=user.getName();
String pwd=user.getPwd();
String userinfo=uname+"/"+pwd;
if(user.isRemember()){
userinfo+="/true";
}else{
userinfo+="/false";
}
if(userinfos==""){
userinfos=userinfo;
}else{
userinfos+=","+userinfo;
}
}
Editor editor=settings.edit();//編輯器記錄
editor.putString(PREF_USERINFO, userinfos);
editor.commit();//編輯器提交保存
}
在Android中,視圖控件大致被分為兩類,即ViewGroup和View,ViewGroup控件作為父控件,包含並管理著子View,通過ViewGroup和Vi
可以顯示在的Android任務,通過加載進度條的進展。進度條有兩種形狀。加載欄和加載微調(spinner)。在本章中,我們將討論微調(spinner)。Spinner 用
我們將使用微信公眾賬號方倍工作室作為講解的例子,二維碼見底部。 本系列教程將引導你完成如下任務: 創建新浪雲計算平台應用啟用微信公眾平台開發模式基礎接口消息及事件
仿水波紋流球進度條控制器,Android實現高端大氣的主流特效,供大家參考,具體內容如下 效果圖: CircleView 這裡主要是實現中心圓以及水波特效