笔记以开发名为CoffeeOrderapp活动为线索,介绍app如何从功能设计→布局设置→代码编写→改进,介绍java文件修改布局嵌套
 
一、应用知识
       首先来看一些AndroidStudio的基本知识,帮助大家有个基本概念。
        在L1和2A课程,我们学习关于XML的代码修改,基本都在修改MainActivity.xml。我们可以直接在视图中查看XML代码的实际视图。
        WINDOWS打开Emulator——安装Virtual Device,下载Nexus4 Android平台库。若系统提醒BIOS未支持VT-X,需要手动在BIOS-configuration-Virtual Technology打开。
        2A课程提到MainActivity.java由Java代码实现文件定义MainActivity布局的目的、功能,并包含各种方法的实际代码。
        一些概念:
        Android DDMS实际Android手机调试时,可以监控设备的活动。
        logcat输出日志,记录并收集设备调试过程中的所有行为。
        Pseudocode
        伪代码——解释应用每一步骤内容的高级描述语言。伪代码和描述不同,以文字形式、以代码的思维分解每个行为的具体内容,并可以直接将每一句改写为代码。
        局部变量&全局变量:在程序文件中,往往会包含多个函数。在每个函数体内定义的变量仅在该函数运行时有效赋值,结束后即释放;全局变量在子函数体外定义,并在程序运行时持续有效。
 
二、应用设计思路
 
       设计整个应用,主要需要以下工作:
 
        界面显示:           显示QuantityPriceOrder按钮,添加TextViewButton
        数据计算:          根据实际QUANTITY×单价计算实际金额——引入变量设置
        Button链接:     按钮的设置和TextView相同,主要涉及点击Button后的设置。
        数目增减:           当按下加减按钮时,能够实时增减QUANTITY
        显示更新:          在设置View时我们通常设定初值,当需要改变显示值时,需要额外定义活动。
 
界面显示——
 
数据计算——
       当需要修改数目时,可直接打开Java文件进行修改;
        每次打开太过麻烦,且Java不向用户开放,为直接通过UI动作进行更新,设置Quantity变量,这样UI的每个操作都可直接修改QUANTITY,自动经过函数进行显示。
        定义模式:
        (Datatype)(Variable name)=(Initial value
    int num = 0;
Button链接——
        设置Button点击活动主要涉及属性android:onClick=”submitOrder
        表示当每次点击Button按钮时,都会在Java文件中寻找submitOrder方法进行运行。
    public void submitOrder(View view) {
displaystatus(1);
}
数目增减——
        同理【+】【-】按钮可定义方法“increment”“decrement
        方法体代码:quantitty=quantity+1;  displayquantity(quantity);
    public void increment(View view) {
num++;
display(num);
displayPrice(num * 5);
displaystatus(0);
}
 
显示更新——
        对Quantity_text_view进行修改,需要定义displayquantity()displayprice()
 private void display(int number) {
TextView quantityTextView = (TextView) findViewById(R.id.quantity_text_view);
quantityTextView.setText("" + number);
} private void displayPrice(int number) {
TextView priceTextView = (TextView) findViewById(R.id.price_text_view);
priceTextView.setText(NumberFormat.getCurrencyInstance().format(number));
}
状态更新——
       在课程视频中,每次点击ORDER,程序会对实时数目进行计算。
        但实际生活中,点击ORDER往往直接提交订单,故需要数目修改实时更新金额,再点击ORDER后,我们期望返回状态“Successfullyordered
        同displayprice方法,我们定义displayStatus(charstatus),只是这里不在是int数字,而是String字符串(一串文字)
private void displaystatus(int number) {
TextView statusTextView = (TextView) findViewById(R.id.status_text_view);
if (num==0)
statusTextView.setText("Please enter quantity !");
else if (number==0)
statusTextView.setText("Ordering...");
else
statusTextView.setText("Successfully ordered !");
}
更多改进:
改进1——嵌套结构
 
        布局优化,当我们需要移动Button按钮至Quantity_text_view同行后,破坏原有LinearLayout的垂直结构。
        (1)全局从LinearLayout修改为RelativeLayout
                RelativeLayout由于过灵活地布局设置,由于加减按钮以外的View依旧以垂直结构为主,我们可以采用第二种方法。
        (2)LinearLayout嵌套子LinearLayout
                从结构来看,嵌套结构所做的改变如下图所示:
                可以在StudioDesign面板Component树看到不同View的嵌套层级结构
 
 
改进2——字符串设置
 
        字符串String和整数Int同属于变量,定义方式同:
                 String(类型) Stringname(自定义名字)= ” dfadfljaldskfj”(初始值)
        订购过程中,可同时更新订单的状态”Successfullyordered” ”Orderfailed
 
实际操作:
        对displaystatus输入参数进行修改int num→ String status
displaystatus("Please select beverage !");
        同时字符串还有“连接”独特性,可以通过加号“+”进行连接,String+int=String
 
 
改进3——条件判断
 
       在加减数目时,没有对0进行识别,即会产生数目-1.金额-5情况
        故而在decrement方法中,我们可以增加以下代码
 if (num == 0)
num = 0;
else
num--;
      表示数目为0时,保持不变;不为0(正整数),数目减1
 
 
改进4——Gravity
       layout_gravity由所属ViewGroup控制
        gravityView控制
        涉及属性包括:
                该控件的布局方式。可以取以下值:
                top                     -- 控件置于容器顶部,不改变控件的大小。
                bottom                -- 控件置于容器底部,不改变控件的大小。
                left                     -- 控件置于容器左边,不改变控件的大小。
                right                   -- 控件置于容器右边,不改变控件的大小。
                center_vertical     -- 控件置于容器竖直方向中间,不改变控件的大小。
                fill_vertical          -- 如果需要,则往竖直方向延伸该控件。
                center_horizontal -- 控件置于容器水平方向中间,不改变控件的大小。
                fill_horizontal      -- 如果需要,则往水平方向延伸该控件。
                center               -- 控件置于容器中间,不改变控件的大小。
                fill                    -- 如果需要,则往水平、竖直方向延伸该控件。
                start                 -- 控件置于容器的起始处,不改变控件的大小。
                end                  -- 控件置于容器的结束处,不改变控件的大小。
改进5——增加多种饮品种类
改进5是结合改进1~4的应用,包含布局嵌套、新变量设置、字符串显示等
       布局嵌套
               在第一级ViewGroup嵌套子LinearLayout,添加三种饮品Button
                 ——“MOCHA”“CAPPUCCINO”“GREENTEA
       设置新变量price
                此时不仅饮品数目num,饮品价格也随种类变化,增加变量price,同为全局变量
                在不同按键onClick链接方法中,分别对price进行赋值,displayPrice显示(确保动态金额显示)
  public void greenteaPrice(View view) {
price=3;
kind="Green tea";
displayPrice(price*num);
}
        丰富订单状态信息
             每次提交ORDER时,向用户反馈饮品种类+饮品数量
              饮品种类设置全局变量kindString类型,同price一起赋值、
              饮品数量num表示,最后displaystatus(“Ordered ”+ kind+ ” cup ”+num);
  public void greenteaPrice(View view) {
price=3;
kind="Green tea";
displayPrice(price*num);
}
所有改进之后得到的CoffeeOrder的效果为

申明:

1、本笔记为文字及图片均为个人原创,转载请注明博客园-igoslly

2、Android开发课程于2017年4年参与GoogleDeveloper进行学习,笔记原版http://www.studyjamscn.com/thread-19854-1-1.html

Android开发笔记(4)——MainActivity.java文件修改&布局嵌套的更多相关文章

  1. 【转】Android开发笔记(序)写在前面的目录

    原文:http://blog.csdn.net/aqi00/article/details/50012511 知识点分类 一方面写写自己走过的弯路掉进去的坑,避免以后再犯:另一方面希望通过分享自己的经 ...

  2. 【转】Android开发笔记——圆角和边框们

    原文地址:http://blog.xianqu.org/2012/04/android-borders-and-radius-corners/ Android开发笔记——圆角和边框们 在做Androi ...

  3. 《ArcGIS Runtime SDK for Android开发笔记》——离在线一体化技术:离线矢量数据同步

    1.前言 上一篇文章中我们实现了离线要素的编辑操作,这一篇中主要介绍离在线一体化技术中最后一个环节离线数据的同步功能,通过对数据的上传,服务器端的版本化管理,实现数据生产管理的整个流程. 转载请注明出 ...

  4. [置顶] Android开发笔记(成长轨迹)

    分类: 开发学习笔记2013-06-21 09:44 26043人阅读 评论(5) 收藏 Android开发笔记 1.控制台输出:called unimplemented OpenGL ES API ...

  5. 学Android开发,入门语言java知识点

    学Android开发,入门语言java知识点 Android是一种以Linux为基础的开源码操作系统,主要使用于便携设备,而linux是用c语言和少量汇编语言写成的,如果你想研究Android,就去学 ...

  6. Android开发笔记--hello world 和目录结构

    原文:Android开发笔记--hello world 和目录结构 每接触一个新东西 都有一个hello world的例子. 1.新建项目 2.配置AVD AVD 没有要新建个,如果不能创建 运行SD ...

  7. Android开发 ---从互联网上下载文件,回调函数,图片压缩、倒转

     Android开发 ---从互联网上下载文件,回调函数,图片压缩.倒转 效果图: 描述: 当点击“下载网络图像”按钮时,系统会将图二中的照片在互联网上找到,并显示在图像框中 注意:这个例子并没有将图 ...

  8. Android开发笔记(一百三十四)协调布局CoordinatorLayout

    协调布局CoordinatorLayout Android自5.0之后对UI做了较大的提升.一个重大的改进是推出了MaterialDesign库,而该库的基础即为协调布局CoordinatorLayo ...

  9. [APP] Android 开发笔记 003-使用Ant Release 打包与keystore加密说明

    接上节 [APP] Android 开发笔记 002 5. 使用ant release 打包 1)制作 密钥文件 release.keystore (*.keystore) keytool -genk ...

随机推荐

  1. Excel数据字典转换为PDM(且显示表名、字段相应的中文描写叙述)

    在工作中遇到了一个问题就是把Excel数据字典转换为PDM. 可是转换完毕了全是英文,原来对表名.字段名的中文描写叙述就没有了. 且对于这个问题在powerdesigner15.2以后能够直接完毕.可 ...

  2. UNION(并集)集合运算

    在集合论中,两个集合(记为集合A和B)的并集是一个包含集合A和B中所有元素的集合.换句话说,如果一个元素属于任何一个输入集合,那么它也属于结果集. 在T-SQL中,UNION 集合运算可以将两个输入查 ...

  3. Android清单文件具体解释(四) ---- backupAgent的使用方法

    在<application>节点中有一个很重要的属性,那就是backupAgent.这里我们将它单独列出来,从基本含义,使用方法及其相关属性等方面来具体介绍一下. 1.backupAgen ...

  4. TMS320F28335项目开发记录6_28335之cmd文件具体解释

    1.CMD文件的作用 CMD文件的作用就像仓库的货物摆放记录一样,为程序代码和数据分配指定的空间. 2.C语言生成的段 C语言生成的段大致分为两大类:初始化和未初始化,已初始化的段含有真正的指令和数据 ...

  5. 洛谷 P1759 通天之潜水

    P1759 通天之潜水 19通过 65提交 题目提供者lych 标签动态规划洛谷原创 难度普及/提高- 提交该题 讨论 题解 记录 最新讨论 暂时没有讨论 题目背景 直达通天路·小A历险记第三篇 题目 ...

  6. Hibernate- Criteria 简易

    package cn.demo; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Session; ...

  7. 转贴:获取元素CSS值之getComputedStyle方法熟悉

    获取元素CSS值之getComputedStyle方法熟悉 一.碎碎念~前言 我们都用过jQuery的CSS()方法,其底层运作就应用了getComputedStyle以及getPropertyVal ...

  8. HTML5中File

    一 File对象与FileList对象 当将input元素的type类型设置为file时,web页面上会显示一个选择文本按钮和一个文本显示框,单击文件按钮可以选择一个文件,文本显示框中会显示选中的文件 ...

  9. E20170616-hm

     transaction   n. 交易,业务,事务; 办理,处理; (一笔) 交易,(一项)事务; (学会等的) 会议记录,学报;  isolation   n. 隔离; 孤独; 隔离状态; 孤立状 ...

  10. bzoj 1059: [ZJOI2007]矩阵游戏【匈牙利算法】

    注意到怎么换都行,但是如果把某个黑方块用在对角线上,它原来所在的行列的的黑方块就都不能用 所以要选出n组不重的行列组合,这里用匈牙利算法做二分图匹配即可(用了时间戳优化) #include<io ...