涉及技术
第一步:创建菜单
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, 1, 1, "电话联系我");
menu.add(0, 2, 2, "短信通知我");
return super.onCreateOptionsMenu(menu);
}
这是处理点击事件的代码:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if(item.getItemId() == 1) {
//电话联系
} else if(item.getItemId() == 2) {
//短信通知
}
return true;
}
接下来我们就可以集中处理业务了。
//电话联系
Intent intent = new Intent(Intent.ACTION_CALL, Uri
.parse("tel:"+ MY_PHONE_NUMBER));
startActivity(intent);
很简单的代码,Intent.ACTION_CALL表示的是调用打电话的程序,同时我们传入一个表示数据的Uri,关于这个Uri的格式,在文档中的Input有说,也就是tel: 接上电话号码,这样的格式。再看发短信的例子:
//短信通知
Uri uri = Uri.parse("smsto:"+ MY_PHONE_NUMBER);
Intent intent = new Intent(Intent.ACTION_SENDTO, uri);
intent.putExtra("sms_body", "你好,谢景扬同学。");
startActivity(intent);
我们使用了Intent.ACTION_SENDTO,传递一个smsto: 接上电话号码,就可以实现发短信给某人,同理,emailto:接邮箱地址就可以发送邮件。同时,我们还要给短信添加内容,添加的方式如代码所示,这里你也可以更自信的写:“你好,谢景扬同学,恭喜你已经通过了我们公司的面试。”
我们创建好的菜单就是下面的样子,还有发短信的界面:
第二步:头像点击
private class PhotoClickListener implements View.OnClickListener {
@Override
public void onClick(View view) {
Intent i = new Intent(context, PagerActivity.class);
startActivity(i);
}
}
到此,MainActivity就已经完成了,完整的代码请看这里。
第三步:设计PagerActivity
因为我们使用的是自定义控件,所以要写全控件所在的包名。这里我还定义了一个style,用于统一应用程序的背景,方便维护更改,style定义如下:
这个时候我们还看不出效果,因为还没有为ViewPager添加数据,ViewPager同样是基于Adapter来处理数据的,它有一个特有的Adapter叫PagerAdapter,我们创建一个内部类继承PagerAdapter,复写该复写的方法,如果你写过ListView,那么看到这些方法应该很容易上手,没用过ListView也没关系,看一次就明白这些方法的意思了。
首先我们得有两个数据集,来存放用于切换的View和对应显示的标题:
private class MyPagerAdapter extends PagerAdapter {
@Override
public int getCount() {
return viewList.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
//return super.instantiateItem(container, position);
container.addView(viewList.get(position));
return viewList.get(position);
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
//super.destroyItem(container, position, object);
container.removeView(viewList.get(position));
}
@Override
public CharSequence getPageTitle(int position) {
//return super.getPageTitle(position);
return titleList.get(position);
}
@Override
public boolean isViewFromObject(View view, Object o) {
return view == o;
}
}
这段代码要我解释,我也说不出什么,方法名称已经很容易理解了,而且基本就是这个模式了,以后再写个PagerAdapter估计也就是差不多的代码,所以就不解释了。
0 条评论