package com.android.contactsmanager;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.KeyEvent;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.ListAdapter;
import android.widget.Spinner;
import android.widget.Toast;
import android.widget.AdapterView.OnItemSelectedListener;
import com.android.contactsmanager.bean.MyContacts;
import com.android.contactsmanager.dao.ContactsManagerDbAdater;
import com.android.contactsmanager.ui.PhotoEditorView;
public class EditContact extends Activity {
ContactsManagerDbAdater contactsManagerDbAdapter;
public static final String TAG = "EditContact";
// 用来标识请求照相功能的activity
private static final int CAMERA_WITH_DATA = 3023;
// 用来标识请求gallery的activity
private static final int PHOTO_PICKED_WITH_DATA = 3021;
// 拍照的照片存储位置
private static final File PHOTO_DIR = new File(Environment
.getExternalStorageDirectory()
+ "/DCIM/Camera");
private File mCurrentPhotoFile;//照相机拍照得到的图片
private PhotoEditorView mEditor;//头像
Cursor contactInfoCursor;//联系人信息
MyContacts contactAllInfoCache=null;//缓存联系人所有信息
ArrayAdapter<String> adapter;//缓存GroupSpinner数据
//各个组件
private EditText name;//姓名
private EditText phoneNumber;//号码
private Spinner groupSpinner;//组
private Button birthdayButton;//生日
private EditText address;//住址
private EditText email;//邮箱
private EditText information;//好友描述
private Button ok;//确定
private Button cancel;//取消
//用户所有信息
String _name;
byte[] img;//头像数据
String _phoneNumber;
String _groupSpinner;
String _birthdayButton;
String _address;
String _email;
String _information;
//联系人信息的索引值
int index_name=1;
int index_contactIcon=2;
int index_telePhone=3;
int index_groupName=4;
int index_birthday=5;
int index_address=6;
int index_email=7;
int index_description=8;
//int selectedGroupNameIndex;//记录用户选择的组的索引,从新的activity返回时用到
//activity处于两种状态,插入状态或者编辑状态
private static final int STATE_INSERT=0;//插入状态
private static final int STATE_EDIT=1;//编辑状态
private int state;//记录当前的状态
// 生日,年,月,日
private int mYear;
private int mMonth;
private int mDay;
String editContactName;//缓存要编辑的联系人
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Log.v(TAG,"onCreate");
setContentView(R.layout.editcontact);
contactsManagerDbAdapter=new ContactsManagerDbAdater(this);
contactsManagerDbAdapter.open();
initAllComponents();//初始化所有组件
initGroupSpinnerData();
Intent intent=getIntent();
String action=intent.getAction();
if(action.equals(Intent.ACTION_INSERT)){
state=STATE_INSERT;
}else if(action.equals(Intent.ACTION_EDIT)){
state=STATE_EDIT;
//下面就该取数据库里面的数据了
editContactName=intent.getStringExtra("name");
String sql="select * from contacts where name=?";
String selectionArgs[]={editContactName};
System.out.println(editContactName);
contactInfoCursor=contactsManagerDbAdapter.getCursorBySql(sql, selectionArgs);
startManagingCursor(contactInfoCursor);
//不知道为何只有加了下面的if语句到resume方法后才会正常执行
if(contactInfoCursor!=null && contactInfoCursor.getCount()>0){
System.out.println("<<<<<<<<<<<<<<<< test >>>>>>>>>>>>>>>>>>>");
}
}else{
Log.e(TAG, "Unknown action,program will exit...");
finish();
return;
}
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
if(state == STATE_INSERT){
setTitle("新建联系人");
getNowTime();
String birthday=mYear+"-"+mMonth+"-"+mDay;
birthdayButton.setText(birthday);
}else if(state == STATE_EDIT){
setTitle("编辑联系人");
if(contactInfoCursor!=null && contactInfoCursor.getCount()>0){
System.out.println(">>>>>>>>>>>>>>>>>> gogogogo >>>>>>>>>>>>>>>>>>");
if(contactAllInfoCache==null){
contactInfoCursor.moveToFirst();
//得到数据库中的联系人信息
_name=contactInfoCursor.getString(1);
img=contactInfoCursor.getBlob(2);
_phoneNumber=contactInfoCursor.getString(3);
_groupSpinner=contactInfoCursor.getString(4);
_birthdayButton=contactInfoCursor.getString(5);
System.out.println(_birthdayButton);
initDateFromDb(_birthdayButton);
_address=contactInfoCursor.getString(6);
_email=contactInfoCursor.getString(7);
_information=contactInfoCursor.getString(8);
}else{
_name=contactAllInfoCache.getName();
//img已经在onActivityResult方法内赋了新值,这里再调用contactAllInfoCache的getContactIcon
//方法会把img给覆盖掉,所以就不再调用了
//img=contactAllInfoCache.getContactIcon();
_phoneNumber=contactAllInfoCache.getTelPhone();
_groupSpinner=contactAllInfoCache.getGroupName();
_birthdayButton=contactAllInfoCache.getBirthday();
_address=contactAllInfoCache.getAddress();
_email=contactAllInfoCache.getEmail();
_information=contactAllInfoCache.getDescription();
}
name.setText(_name);
mEditor.setPhotoBitmap(getBitmapFromByte(img));
phoneNumber.setText(_phoneNumber);
int groupIndex=adapter.getPosition(_groupSpinner);
groupSpinner.setSelection(groupIndex);
birthdayButton.setText(_birthdayButton);
address.setText(_address);
email.setText(_email);
information.setTextKeepState(_information);
System.out.println(">>>>>>>>>>>>>>>>>> end >>>>>>>>>>>>>>>>>>");
}
}
}
private void initDateFromDb(String birthdayButton2) {
System.out.println(birthdayButton2);
String args[]=birthdayButton2.split("-");
System.out.println(args.length);
mYear = Integer.valueOf(args[0]);
mMonth = Integer.valueOf(args[1]);
mDay = Integer.valueOf(args[2]);
}
//当从当前的Activity切换到另一个Activity时调用,切换过去时当前Activity并未结束(Destory)
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
Log.v(TAG, "record original data");
//缓存联系人信息
contactAllInfoCache=new MyContacts();
//得到最终用户信息
contactAllInfoCache.setName(name.getText().toString());
BitmapDrawable bd=(BitmapDrawable)mEditor.getDrawable();
Bitmap bitMap=bd.getBitmap();
contactAllInfoCache.setContactIcon(getBitmapByte(bitMap));
contactAllInfoCache.setTelPhone(phoneNumber.getText().toString());
contactAllInfoCache.setGroupName(groupSpinner.getSelectedItem().toString());
contactAllInfoCache.setBirthday(birthdayButton.getText().toString());
contactAllInfoCache.setAddress(address.getText().toString());
contactAllInfoCach
没有合适的资源?快使用搜索试试~ 我知道了~
android 通讯录源代码 UI超赞
共123个文件
png:51个
class:42个
xml:15个
4星 · 超过85%的资源 需积分: 32 153 下载量 177 浏览量
2011-08-16
10:45:21
上传
评论
收藏 1MB ZIP 举报
温馨提示
可以看出作者在UI方面下足了功夫 而且demo的编程风格和代码实现也很不错 分享快乐 物尽其用ing
资源推荐
资源详情
资源评论
收起资源包目录
android 通讯录源代码 UI超赞 (123个子文件)
resources.ap_ 247KB
ContactsManager.apk 274KB
EditContact.class 19KB
ContactsManager.class 13KB
ContactsManagerDbAdater.class 8KB
ContactsManager$MyCursrTreeAdapter.class 4KB
EditContact$PhotoListener.class 4KB
ContactsManagerDbAdater$DatabaseHelper.class 3KB
ContactsManager$8.class 3KB
PhotoEditorView.class 3KB
ContactsManager$4.class 2KB
R$drawable.class 2KB
ContactsManager$MyCursrTreeAdapter$1.class 2KB
ContactsManager$MyCursrTreeAdapter$1$1.class 2KB
ContactsManager$MyCursrTreeAdapter$1$3.class 2KB
ContactsManager$MyCursrTreeAdapter$1$2.class 2KB
MyContacts.class 2KB
ContactsManager$3.class 2KB
ContactsManager$6.class 2KB
EditContact$2.class 2KB
EditContact$PhotoListener$2.class 2KB
ContactsManager$1.class 1KB
EditContact$PhotoListener$1.class 1KB
EditContact$1.class 1KB
EditContact$PhotoListener$3.class 1KB
ContactsManager$5.class 986B
ContactsManager$7.class 986B
ContactsManager$9.class 986B
ContactsManager$10.class 984B
R$id.class 974B
ContactsManager$2.class 963B
EditContact$6.class 958B
ContactsManager$11.class 954B
EditContact$7.class 928B
EditContact$3.class 911B
R$string.class 859B
EditContact$4.class 833B
EditContact$5.class 826B
R.class 651B
MyConstant.class 599B
R$layout.class 562B
R$style.class 425B
R$attr.class 367B
PhotoEditorView$EditorListener.class 284B
.classpath 280B
Thumbs.db 97KB
classes.dex 47KB
如何读懂源代码.doc 188KB
EditContact.java 23KB
ContactsManager.java 18KB
ContactsManagerDbAdater.java 9KB
R.java 6KB
PhotoEditorView.java 2KB
MyContacts.java 2KB
MyConstant.java 343B
default_bg.png 111KB
sms_icon.png 5KB
email_icon.png 5KB
call_icon.png 4KB
h004.png 4KB
h011.png 4KB
edit_over.png 4KB
h020.png 4KB
h016.png 4KB
h013.png 4KB
h018.png 4KB
h015.png 4KB
h007.png 3KB
h001.png 3KB
h002.png 3KB
h008.png 3KB
h003.png 3KB
h017.png 3KB
h012.png 3KB
h014.png 3KB
h019.png 3KB
h006.png 3KB
h009.png 3KB
h005.png 3KB
h010.png 3KB
icon.png 3KB
qq_dialog_err_icon.png 2KB
qq_dialog_alert_icon.png 2KB
qq_dialog_default_icon.png 2KB
contact_add_icon.png 2KB
popup_inline_error.9.png 2KB
edit.png 2KB
hhh.9.png 1KB
input_over.9.png 1KB
textfield_pressed.9.png 1KB
login_back.9.png 1KB
contact_picture_border_highlight.9.png 824B
contact_picture_border_pressed.9.png 791B
input.9.png 659B
contact_picture_border_normal.9.png 603B
textfield_disabled_selected.9.png 570B
textfield_disabled.9.png 545B
expand_column_bg_over1.9.png 492B
login_input.9.png 483B
expand_column_bg_over.9.png 479B
共 123 条
- 1
- 2
nvpengyoumei001
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页