涉及技术
第一步:创建菜单
@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 条评论