您的当前位置:首页正文

android课程设计

2022-12-28 来源:易榕旅网
主要特点或功能

1.可以发短信,打电话

2.能够调用数据库对数据进行保存 3. 有很好的图片背景 4.有很好的界面切换效果

总体设计

Add 按钮 主界面(Contacts Activity) Image按钮 LinearLayout(联系人和号码) edit按钮 通过intent 添加界面 进行切换 通过intent进行切换 通过intent进行切换 通过intent进行切换

检测其他程序的图库 (AddContact activity) 单击:selection Activity 长按:编辑和删除菜单 添加界面 (AddContact activity) 详细设计

首先是登陆页面的设计,其界面效果如下图:

编码实现

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.list_item);

DatabaseHelper dbh = new DatabaseHelper(this,\"Information\"); db = dbh.getWritableDatabase();

cursor = db.query(\"contact\", new String[]{\"name\",\"mobile\",\"uri\"}, null, null, null, null, null);

cursor.moveToFirst();

System.out.println(\"-------count-------\"+cursor.getCount()+\"-------\"

list = new ArrayList>();

);

//启用长按支持,弹出的上下文菜单在

getListView().setOnCreateContextMenuListener(this);

while(cursor.moveToNext()) {

String n = cursor.getString(cursor.getColumnIndex(\"name\"));

String m = cursor.getString(cursor.getColumnIndex(\"mobile\")); String u = cursor.getString(cursor.getColumnIndex(\"uri\")); HashMap map = new HashMap(); map.put(\"name\", n); map.put(\"mobile\",m); if(u!=null){

System.out.print(\"is not null\");

Uri uri = Uri.parse(u);

ContentResolver cr = this.getContentResolver(); try{

Bitmap

bitmap

=

BitmapFactory.decodeStream(cr.openInputStream(uri)); map.put(\"image\", bitmap); }catch(FileNotFoundException e){

e.printStackTrace(); }

} else

map.put(\"image\",

BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher));

list.add(map);

}

System.out.println(\"---------------oncreate--------------\"); System.out.println(\"-----listnum---\"+ list.size()+\"-----\"); listAdapter = new MySimpleAdapter(this,list,R.layout.data,

new String[]{\"image\",\"name\",\"mobile\"},new int[]{R.id.image,R.id.name,R.id.mobile}); setListAdapter(listAdapter);

addcontact = (Button)findViewById(R.id.addcontact); addcontact.setOnClickListener(new OnClickListener(){ public void onClick(View v){

Intent intent = new Intent();

intent.setClass(Contacts.this, AddContact.class);

Contacts.this.startActivity(intent); } });

}

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {

AdapterView.AdapterContextMenuInfo info; try {

info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch (ClassCastException e) { return; }

cursor.moveToPosition(info.position); if (cursor == null) {

System.out.println(\"------cursor = null ---------\"); return; }

添加联系人界面如下图:

编码实现:

public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

// setContentView(R.layout.activity_add_contact); setContentView(R.layout.dialog_item);

editname = (EditText)findViewById(R.id.editname); editmobile = (EditText)findViewById(R.id.editmobile); confirm = (Button)findViewById(R.id.confirm); cancel = (Button)findViewById(R.id.cancel); isnew = true;

intent = getIntent();

if(intent.getStringExtra(\"name\") != null) {

isnew = false;

editname.setText(intent.getStringExtra(\"name\"));

editmobile.setText(intent.getStringExtra(\"mobile\")); }

confirm.setOnClickListener(new OnClickListener(){ public void onClick(View v){

System.out.println(\"------editname------\"+editname.getText().toString());

if(editname.length() != 0 && editmobile.length() != 0) {

dbh

=

new

DatabaseHelper

DatabaseHelper(AddContact.this,\"Information\");

SQLiteDatabase db = dbh.getWritableDatabase(); ContentValues values = new ContentValues();

values.put(\"name\", editname.getText().toString());

values.put(\"mobile\", editmobile.getText().toString());

new

HashMap map = HashMap();

map.put(\"name\", editname.getText().toString());

map.put(\"mobile\", editmobile.getText().toString()); map.put(\"image\",

BitmapFactory.decodeResource(getResources(), R.drawable.contact_add_normal));

if(isnew) {

System.out.println(\"-----insert----\"+isnew); db.insert(\"contact\", null, values); Contacts.list.add(map);

} else

{

Bundle bn = intent.getExtras();

String ss = bn.getString(\"data\"); System.out.println(\"-----position=\"+ss); int index = Integer.parseInt(ss);

db.delete(\"contact\",\"name=?\",new

String[]{Contacts.list.get(index).get(\"name\").toString()});

Contacts.list.remove(Contacts.list.indexOf(Contacts.list.get(index)));

map.put(\"name\", editname.getText().toString());

map.put(\"mobile\", editmobile.getText().toString());

map.put(\"image\",

BitmapFactory.decodeResource(getResources(),

R.drawable.contact_add_normal));

Contacts.list.add(index, map);

db.insert(\"contact\", null, values);

Contacts.listAdapter.notifyDataSetChanged(); }

setResult(RESULT_OK,(new Intent()).setAction(uid));

System.out.println(\"-----update----\"+isnew)

finish(); }

else {

Toast.makeText(AddContact.this,

\"name not null\",

Toast.LENGTH_SHORT).show(); finish(); } } });

呼叫和发短信界面如下图:

编码实现

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); setContentView(R.layout.select_item);

personalmsg = (TextView)findViewById(R.id.personalmsg); call = (Button)findViewById(R.id.call); send = (Button)findViewById(R.id.send);

s_cancel = (Button)findViewById(R.id.s_cancel); intent = getIntent();

personalmsg.setText(intent.getStringExtra(\"name\")+\":\"+intent.getStringExtra(\"mobile\"));

call.setOnClickListener(new OnClickListener(){ public void onClick(View v){

Intent call_intent = new Intent(Intent.ACTION_CALL,Uri.parse(\"tel:\"+intent.getStringExtra(\"mobile\")));

Selection.this.startActivity(call_intent); finish();

}

});

send.setOnClickListener(new OnClickListener(){ public void onClick(View v){ Intent send_intent =

new

Intent(Intent.ACTION_SENDTO,Uri.parse(\"smsto:\"+intent.getStringExtra(\"mobile\")));

}

Selection.this.startActivity(send_intent); finish();

});

s_cancel.setOnClickListener(new OnClickListener(){

public void onClick(View v){ finish();

} }); }

添加和删除界面如下图:

编码实现

public void onCreateContextMenu(ContextMenu menu, View view, ContextMenuInfo menuInfo) {

AdapterView.AdapterContextMenuInfo info;

try {

info = (AdapterView.AdapterContextMenuInfo) menuInfo; } catch (ClassCastException e) { return; }

cursor.moveToPosition(info.position);

if (cursor == null) {

System.out.println(\"------cursor = null ---------\"); return; }

menu.setHeaderTitle(list.get(info.position).get(\"mobile\").toString()); menu.add(0, 1, 0, R.string.addcontact); menu.add(0, 2, 0, R.string.delete); }

编辑界面如下图:

编码实现:

isnew = true;

intent = getIntent();

if(intent.getStringExtra(\"name\") != null) {

isnew = false; }

editname.setText(intent.getStringExtra(\"name\"));

editmobile.setText(intent.getStringExtra(\"mobile\"));

关键技术

1.实现对数据库的操作,是的数据能够保存在手机了。

2.使用了listview的类,从而能够动态的添加数据并显示出来。

3.通过intent的过滤器功能默认对图片进行搜索,并插入图片作为联系人的头像

总结

通过本次android的课程设计,真实切身体会到android得伟大之处,前景之广,不言而喻。

刚开始由于在代码规范方面做的不好,代码都是按自己的喜好去写,当系统出了问题,去修改的时候,那可是一个头大啊,问题在哪儿,是常说的一句话,但是问题在哪儿,才是真正的问题,由于没有一个好的代码规范,致使问题在眼前也视而不见,是可悲,是无奈,没有好的总体设计,想到什么写什么,等再想到什么就很难再写什么了,因为基础没有做好,要写一个新的功能就要改好多处久得功能,得不偿失啊。

这次课程设计让我深深的认识到,要想一步到位的完成一个软件,必须要有清晰的系统架构,合理的代码规范,同时也要有不怕困难的决心。问题谁都可以遇到,当你遇到问题时一定不可以急躁,当时解决不了,不要紧,等自己在状态了再回来看看自己的问题,那时估计已经不是什么问题,迎刃而解了,可见对待问题一定要有一个清新的头脑。

通过团组的共同努力,终于看到了成果,软件顺利的运行了,并且实现了预期的效果。

因篇幅问题不能全部显示,请点此查看更多更全内容