涉及技术

Pager控件、Menu使用、短信电话调用

第一步:创建菜单

上篇文章我们已经创建好了主界面,但是仅仅只展示这么一点信息是完全不够的吸引面试官的,所以我们得继续加一些需求。
如果我们成功的让HR或者面试官安装了这个程序,那么我们得让他除了能看我们的信息之外,还能有其他更方便的功能,这个时候我就想到了加一个直接给咱发短信和打电话的功能。我决定将这两个功能加到我们主界面的菜单中。
首先复写onCreateOptionsMenu和onOptionsItemSelected。在onCreateOptionsMenu中,我们创建菜单项;在onOptionsItemSelected中,我们处理每个菜单项点击的事件。这是创建菜单项的代码:
    @Overridepublic boolean onCreateOptionsMenu(Menu menu) {menu.add(0, 1, 1, "电话联系我");menu.add(0, 2, 2, "短信通知我");return super.onCreateOptionsMenu(menu);}

这是处理点击事件的代码:

    @Overridepublic boolean onOptionsItemSelected(MenuItem item) {if(item.getItemId() == 1) {//电话联系} else if(item.getItemId() == 2) {//短信通知}return true;}

接下来我们就可以集中处理业务了。

关于Intent,大家应该都很熟了,用Intent可以很简单跳转Activity,启动Service等,我们都是使用的Intent的  public Intent (Context packageContext, Class<?> cls)  这个构造方法,Intent的另一个构造方法也很实用:public Intent (String action, Uri uri) 。它允许我们传入 一个动作地址和一个数据URI来执行一个操作,Intent中有很多系统定义好了的动作地址,其中就包括了我们要用的发送短信和打电话的动作地址,具体可以看看 这里。
直接来看看我们打电话的例子:
 //电话联系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:接邮箱地址就可以发送邮件。同时,我们还要给短信添加内容,添加的方式如代码所示,这里你也可以更自信的写:“你好,谢景扬同学,恭喜你已经通过了我们公司的面试。”
我们创建好的菜单就是下面的样子,还有发短信的界面:


第二步:头像点击

我们的圆形头像照片之前做好了,在上一篇文章中已经加上了点击的事件,但是还没定义这个PhotoClickListener,这个类非常简单,直接跳转到我们要跳转的类就可以,下一个类就取名为PagerActivity,这样的话代码如下:
    private class PhotoClickListener implements View.OnClickListener {@Overridepublic void onClick(View view) {Intent i = new Intent(context, PagerActivity.class);startActivity(i);}}

到此,MainActivity就已经完成了,完整的代码请看 这里。

第三步:设计PagerActivity

上一步已经定了点击头像后跳转到的这个类的名字,接下来就创建它。我们先看看要达到的效果:
这个样子的控件大家应该见过很多次,这是在android 3.0时发布的一个新控件,但是google还是为低版本的android发布了一个兼容包,让低版本的程序能够使用这个控件,这个兼容包的名字是android-support-v4.jar。
有了这个兼容包,我们很容易就能够实现这个可以左右滑动切换View的效果了,我们新建一个Activity并且开始布局,布局如下:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="match_parent"android:layout_height="match_parent"><android.support.v4.view.ViewPagerandroid:id="@+id/viewpager"android:layout_width="wrap_content"android:layout_height="wrap_content"style="@style/AppBackground"><android.support.v4.view.PagerTitleStripandroid:id="@+id/viewtitle"android:layout_width="wrap_content"android:layout_height="wrap_content"style="@style/AppBackground" /></android.support.v4.view.ViewPager></LinearLayout>

因为我们使用的是自定义控件,所以要写全控件所在的包名。这里我还定义了一个style,用于统一应用程序的背景,方便维护更改,style定义如下:

    <style name="AppBackground"><item name="android:background">#2F8FBF</item></style>

这个时候我们还看不出效果,因为还没有为ViewPager添加数据,ViewPager同样是基于Adapter来处理数据的,它有一个特有的Adapter叫PagerAdapter,我们创建一个内部类继承PagerAdapter,复写该复写的方法,如果你写过ListView,那么看到这些方法应该很容易上手,没用过ListView也没关系,看一次就明白这些方法的意思了。
首先我们得有两个数据集,来存放用于切换的View和对应显示的标题:

其中viewList添加的两个变量是我们后面要设计的两个View。现在就可以看看Adapter是怎么创建的了:
    private class MyPagerAdapter extends PagerAdapter {@Overridepublic int getCount() {return viewList.size();}@Overridepublic Object instantiateItem(ViewGroup container, int position) {//return super.instantiateItem(container, position);container.addView(viewList.get(position));return viewList.get(position);}@Overridepublic void destroyItem(ViewGroup container, int position, Object object) {//super.destroyItem(container, position, object);container.removeView(viewList.get(position));}@Overridepublic CharSequence getPageTitle(int position) {//return super.getPageTitle(position);return titleList.get(position);}@Overridepublic boolean isViewFromObject(View view, Object o) {return view == o;}}

这段代码要我解释,我也说不出什么,方法名称已经很容易理解了,而且基本就是这个模式了,以后再写个PagerAdapter估计也就是差不多的代码,所以就不解释了。

结尾

下一篇文章会设计PagerView中显示的两个View。
扯下淡,希望这个程序能激发大家的想象力,多想出这样的一些点子,做一些实用的小程序,分享出来。我也非常大家给我提建议和意见,我都会接受的。
最后还是那句,程序已经托管到了 Github,欢迎大家去下载,如果你比较懒不想自己写一个Android版本的简历,可以直接check下来,修改一下数据和照片就可以用了。

Android版简历(二)相关推荐

  1. Android版简历(一)

    简介 本人是二本应届毕业生,由于近来找工作,有的公司比较挑学校,好几次都没有笔试的机会.所以我决定弄点让人眼前一亮的东西,因为我个人比较喜欢Android开发(个人觉得我的J2EE比较好,Androi ...

  2. Android版简历(四)

    涉及技术 自定义控件.自定义控件动画 第一步:继承自定义控件 虽然已经实现了需要的控件,但是这个控件的功能还是不够强大,使用起来也不够方便.举个例子:让 控件的颜色随着能力值的大小而不同或者是 点击之 ...

  3. windows 环境下,编译android 版opencv-4.5.5,并添加opencv_contrib-4.5.5 扩展模块

    参考博客:(130条消息) windows10 vs2019 版本:cmake将 opencv_contrib-4.5.5 扩展模块编译添加到 opencv-4.5.5 正式版中_Chhjnavy的博 ...

  4. Android平台下二维码漏洞攻击杂谈

    路人甲 · 2015/12/02 12:42 0x00 前言 现在Android App几乎都有二维码扫描功能,如果没有考虑到二维码可能存在的安全问题,将会导致扫描二维码就会受到漏洞攻击,严重的可能导 ...

  5. Android版数据结构与算法汇总十二章

    Android版数据结构与算法(一):基础简介 https://www.cnblogs.com/leipDao/p/9140726.html Android版数据结构与算法(二):基于数组的实现Arr ...

  6. [Unity+Android]横版扫描二维码

    更多教程请访问: http://dingxiaowei.cn/ 终于解决了一个忧伤好久的问题,严重拖了项目进度,深感惭愧!一直被一系列的问题所困扰,然后又只能自己一个人摸索,也是一段辛酸忧伤史,现在小 ...

  7. 利用电脑玩android版天天连萌刷高分 二,利用计算机玩Android版“天天连萌”刷高分(一)——截图...

    利用电脑玩Android版"天天连萌"刷高分(一)--截图 这几周微信游戏"天天连萌"由于第一名总是被一个同学所占据(没办法,我等级不够高游戏细胞又没他好),总 ...

  8. 从简历被拒,到 Android 面试。二本如何在 359 天成功拿下 offer

    免费福利 此份文档详细记录了千道面试题与详解:  !     私信我回复[03]即可免费获取 二.面试背景 自从去年被头条笔试的算法凌辱和被头条的前辈指教了之后对头条没啥好感了,也感觉进不去,所以后面 ...

  9. 利用电脑玩android版天天连萌刷高分 二,利用计算机玩Android版“天天连萌”刷高分(四)——模拟按键及程序优化...

    利用电脑玩Android版"天天连萌"刷高分(四)--模拟按键及程序优化 这一系列文章,没想到从去年10月份以来,写了三篇我就忘了写了,现在才想起来,所以一不小心就成了跨年系列文章 ...

最新文章

  1. 12月22日 find命令
  2. 印度首富要免费向全国提供4G网络3个月
  3. 安利一下这个群投票的小程序,比较好用
  4. git灰度发布版本_spring cloud灰度发布
  5. python中0o10_Python基础10—I/O编程
  6. 【Level 09】U1 The way I see it L1 A great adventure
  7. 可拖动的进度条_视频号全新升级!进度条可拖动、支持@、支持转发......
  8. [转]从青铜到王者,一文教你节省90%内存占用
  9. hexo之next主题添加分类
  10. 中位数±四分位数表达_Python数据分析:强大字符串处理工具,正则表达式
  11. C/C++ C# unity Python 帮助文档 书籍 学习资料
  12. redhat 5.4 搭建本地YUM源
  13. stm32的命名及选型介绍
  14. 固态硬盘在线测试软件,SSD检测工具(SSDlife Pro)
  15. 人工智能机器学习数据挖掘重要会议日期
  16. 超神学院暗质计算机,超神学院之拳皇
  17. 第二类增值电信业务经营许可证在哪里办?
  18. 拼团系统开发|全民拼购商业模式解读
  19. 计算机上无线网络开关在哪里,笔记本电脑的无线网开关在哪里打开
  20. 推荐一个不到2MB的C#开发工具箱,集成了上千个常用操作类

热门文章

  1. vue项目搭建以及环境配置
  2. win7修复计算机消失,win7系统引导文件丢失的修复妙招
  3. 什么是多进程-多线程-多协程 ----进程和多进程
  4. c++读取文件夹下的多个txt.文件并计算每个txt数据的平均值
  5. 哔哩哔哩2020年Q4及全年财报:全年营收120亿元,同比增长77%
  6. 《父与子的编程之旅-与小卡特一起学python》第18章
  7. 诺基亚Vertu又出奢华新版本
  8. hm编码工具使用_HM中字典编码分析
  9. Build Automatically
  10. 给tensor增加维度 或 减少维度