开发背景:

  当你想用抛硬币来决定事情的时候,那么硬币抛起的瞬间,你就有答案了。一样的,吃啥?eatwhat点开,按钮一点,你就可以知道你中午要吃啥。

话不多说,项目开发走起

  ADT点开,New==>Android Application Project ==>

  首先确定布局,第一版我们就做简单的功能,视图中有两个控件,一个文本(TextView)用来输出店家名称,一个按钮(Button)用来让用户点击进行店家名称的随机切换。在android开发中有两种方式来实现布局,今天我们先讲用配置文件.xml来实现。

  在android项目目录下res/layout/中有一个activity_main.xml的布局文件,我们在其中将其自带的默认的TextView进行设置:

  1. <TextView
  2. android:id="@+id/shop_name"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:text="@string/shop_name"
  6. android:layout_centerInParent="true"
  7. android:textSize="18sp" />

  接着设置Button按钮:

  1. <Button
  2. android:id="@+id/random_btn"
  3. android:layout_width="wrap_content"
  4. android:layout_height="wrap_content"
  5. android:layout_centerHorizontal="true"
  6. android:text="@string/random_btn_text"/>

  这就是我们通过.xml创建出来的布局:

  这其中有两点要注意的是两个控件的文本我们都是通过res/values/strings.xml进行设置,这样在后续开发中便于修改以及对应的做国际化

  1.   <string name="shop_name">店名</string>
  2.   <string name="random_btn_text">点我</string>

  界面设置完,我们就来处理业务逻辑:

  在mainactivity.java中定义一个方法init()对控件进行初始化和设置监听:

  1. private void init() {
  2.  
  3. //定义一个数组用来存放我们要的几个店名
  4. shop = new String[]{
  5. "食莆记","谷之味","王大妈水饺","兰州拉面","惠兴饭店"
  6. };
  7.  
  8. //初始化控件textview
  9. shop_name = (TextView) findViewById(R.id.shop_name);
  10.  
  11. //初始化控件button
  12. random_btn = (Button) findViewById(R.id.random_btn);
  13. //注册按钮点击监听
  14. random_btn.setOnClickListener(new RandomBtnClick());
  15. }

   

  定义一个内部类RandomBtnClick来实现点击监听:

  1. class RandomBtnClick implements OnClickListener{
  2.  
  3. @Override
  4. public void onClick(View v) {
  5.  
  6. //随机数,区间以之前定义的店家的数组为长度
  7. Random random = new Random();
  8. int num = random.nextInt(shop.length);
  9.  
  10. //textview显示以该随机数为下标对应的商家数组的名字
  11. shop_name.setText(shop[num]);
  12. }
  13. }

  

 

  这样,最基本的随机事件就完成了,想吃什么,随意,那就点开eatwhat,听天由命。。。

eatwhatApp开发实战(一)的更多相关文章

  1. eatwhatApp开发实战(三)

    在实战二中我们在eatwhatApp上增加了“添加店铺的功能”.接下来,我们来将添加的店铺显示出来,这里我们用到控件--ListView. 先上演示图: 首先,我们先设置布局: <Relativ ...

  2. eatwhatApp开发实战(二)

    上期,我们做了个小app“eatwhat”,接下来每期都会为其添加新的功能.本期,我们为店铺增加添加店铺的功能. 还是先设置个布局: <RelativeLayout android:layout ...

  3. eatwhatApp开发实战(十四)

    之前我们就输入框EditText做了优化,而这次,我们为app添加拨打电话的功能. 首先是布局,将activity_shop_info.xml中对应的电话那一栏进行重新设计: <Relative ...

  4. eatwhatApp开发实战(十三)

    这次内容,我们就项目中添加商店名称的EditText进行修改,让添加按钮随着edittext的内容而改变. 上代码,首先是xml文件上对两个控件的修改: <RelativeLayout andr ...

  5. eatwhatApp开发实战(十二)

    上次我们介绍了跳转activity并且实现传值的功能,今天我们来实现双击返回键退出app的功能,上代码: 这里我们有两种方式去实现点击事件: 第一种方式: /** * 返回键的监听(系统提供的) */ ...

  6. eatwhatApp开发实战(十一)

    之前我们实现了点击item项跳转activity,接下来我们再其基础上添加参数的传递. 在MainActivity里面的onItemClick()中: String name = shopList.g ...

  7. eatwhatApp开发实战(十)

    android应用中,很少有一个activity的app,这次我们设置一个activity,通过listview的点击跳转并显示对应的商店信息. 首先创建类ShopInfoActivity,对应设置其 ...

  8. eatwhatApp开发实战(九)

    之前我们为app在item项上添加了点击出现修改对话框,对店名进行修改的功能,其中我们会发现我们点击item和点击item上的按钮会有点击冲突.这次我们来修正下这个问题,同时介绍item项的长按点击O ...

  9. eatwhatApp开发实战(八)

    在App中增,删功能都有了,这次我们来做改的功能.在项目中点击items项时对对应的条目中的商店名称进行修改. 点击items跳出一个对话框,里面包含了输入框.修改按钮和取消按钮: AlertDial ...

随机推荐

  1. 数学--数论--HDU 2104 丢手绢(离散数学 mod N+ 剩余类 生成元)+(最大公约数)

    The Children's Day has passed for some days .Has you remembered something happened at your childhood ...

  2. 图论--最小环--Floyd模板

    #include <iostream> #include <algorithm> #include <cstdio> #include <cstring> ...

  3. Maxim实时时钟芯片设计指南5413-二进制编码十进制(BCD)格式实时时钟中的状态机逻辑

    网上DS12C887的文章涉及到时间的存储格式使用的都是二进制代码,究竟使用BCD码该如何操作?正好美信官网上有一篇文章.美信官网不稳定,先贴到这里,有时间再翻译. 原文链接 State Machin ...

  4. 11_JavaScript基础入门(1)

    JavaScript简介 1.JavaScript用途 前端三层: 结构层  HTML(从语义的角度描述页面的结构) 样式层  CSS(从审美的角度装饰页面) 行为层  JavaScript (从交互 ...

  5. Linux内核驱动学习(一)编写最简单Linux内核模块HelloWorld

    文章目录 准备工作 什么是内核模块 编写 hello.c 模块编译 相关指令 测试结果 模块加载 模块卸载 准备工作 在进行以下操作前,首先我准备了一台电脑,并且安装了虚拟机,系统是Ubuntu16. ...

  6. 移动端H5支付(微信和支付宝)

    我们直接进入主题吧,先说功能: 1.用户通过我们的页面输入充值帐号和金额调起支付(微信或者支付宝),支付成功返回获取支付结果. 2.微信支付成功后重定向到指定页面(没有设置重定向地址的话,默认返回调起 ...

  7. hdu2336 (匈牙利最大匹配+二分)

    Describe 这是一个简单的游戏,在一个n*n的矩阵中,找n个数使得这n个数都在不同的行和列里并且要求这n个数中的最大值和最小值的差值最小. Input 输入一个整数T表示T组数据. 对于每组数据 ...

  8. ASA failover配置(A/S)

    环境描述 1. 两条公网出口,分别为移动,联通 2. 两台ASA做主备配置,实现出口故障转移 3. 内网两台核心做堆叠配置(由于模拟器无法实现堆叠,此处使用HSRP) 需求描述 1. 当一条公网链路故 ...

  9. 《C程序设计语言》 练习3-3

    问题描述 编写expand(s1,s2),将字符串s1中类似于a-z类的速记符号在字符串s2中扩展为等价的完整列表abc.....xyz.该函数可以处理大小写字母和数字,并可以处理a-b-c,a-z0 ...

  10. Abp领域事件(EventBus)源码解析

    Abp中使用EventBus来解耦领域中的业务逻辑,也是订阅-发布模式的一种实现.简单来说就是,当我触发一个事件,注册了这个事件的处理器就会被找到并执行. 先看看整体代码结构 其中Entities文件 ...