• 20155205 《Java程序设计》实验四 Android程序设计


    20155205 《Java程序设计》实验四 Android程序设计

    一、实验内容及步骤

    (一) Android Stuidio的安装测试

    参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十四章:
    - 安装 Android Stuidio
    - 完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号,提交代码运行截图和码云Git链接,截图没有学号要扣分
    - 学习Android Stuidio调试应用程序
    
    • 将布局文件activity_main.xml中的android:text="Hello World!"改为android:text="Hello World20155305!"

    结果如下:

    • 相关知识:Android Studio项目的目录树

    1.build:该目录包含了自动生成的文件,这些文件包括了编译设置项、R类等。

    2.libs:该目录包含了开发Android应用所需要的库文件。

    3.src:该目录存放了应用的源代码.java文件。默认情况下,它包含了MainActivity.java文件,这个源代码j有一部分是执行了你点击应用图标时启动应用所需要功能。

    4.res:该目录存放了所有的资源文件。

    5.drawable:该目录存放了项目的drawable对象和一些图片资源。

    6.layout:该目录存放了各个界面的布局文件。

    7.menu:该目录存放了应用中设计的菜单对象。

    8.mipmap:该目录存放了应用的主要图片资源。

    9.values:该目录存放了字符串、颜色等定义的资源集合。

    10.AndroidManifest.xml:该文件是描述应用基础特性的文件,定义了每个组件。

    (二) Activity测试

    参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十五章:
    - 构建项目,运行教材相关代码
    - 创建 ThirdActivity, 在ThirdActivity中显示自己的学号,修改代码让MainActivity启动ThirdActivity
    - 提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
    
    • way1.按照教材的内容,修改MainActivity中的代码
    @Override
        public boolean onTouch(View arg0, MotionEvent event) {
            Intent intent = new Intent(this, ThirdActivity.class);
            intent.putExtra("message", "20155305郝博雅");
            startActivity(intent);
            return true;
        }
    
    • way2.在第一个实验中,直接在MainActivity中添加setContentView(R.layout.activity_third);也能达到调用另一个activity的效果。

    结果如下:

    • 相关知识

    Android中有四大组件,分别是Activity、Service、ContentProvider和Broadcast Receiver。对于Activity,它是Android系统中最常用、最常见的一个组件。一个应用通常包含了多个Activity。

     Activity类定义了如下的回调事件:
    
         - onCreate():这是第一个回调方法。当Activity首次被创建时会调用它。
         - onStart():当Activity对于用户来说变为可视状态时会回调此方法。
         - onResume():当用户开始与应用交互时会调用此方法。
         - onPause():当前的Activity正在暂停中,并且先前的Activity正在恢复时,被暂停的这个Activity不会再接收用户的输入,也不再执行任何代码和调用。
         - onStop():当Activity不再为可视状态时会调用该回调方法。
         - onDestroy():该方法会在Activity被系统销毁前被调用。
         - onRestart():当Activity在被停止后重新启动时,会调用该回调方法。
    

    (三) UI测试

    参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十六章:
    - 构建项目,运行教材相关代码
    -  修改代码让Toast消息中显示自己的学号信息
    - 提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
    

    代码如下:

    package com.example.a1.toast;
    
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.view.View;
    import android.widget.Button;
    import android.widget.Toast;
    
    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Button button = (Button) findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener()
            {
                @Override
                public void onClick(View v){
                    Toast toast = Toast.makeText(MainActivity.this,"20155205", Toast.LENGTH_LONG);
                    toast.show();
                }
            });
        }
    }
    

    结果如下:

    • 相关知识

      Android提供了许多的UI组件,你能按需构建应用的用户交互界面。

       这些控件主要有:
      
           - TextView:文本标签,该控件用于显示文本。
      
           - EditText:文本框,是预定义好的TextView的一个子类,有富文本编辑能力。
      
           - AutoCompleteTextView:自动完成的文本标签,类似于EditText。当用户在输入的时候会自动给出一些完整的建议。
      
           - Button:按钮,可以按压、点击,由用户完成一个动作。
      
           - ImageButton:图片按钮,顾名思义。
      
           - CheckBox:复选框,可以作为用户使用的一个开关。当有一系列可供选择的选项时,建议使用该控件。
      
           - ToggleButton:带有一个“灯泡”效果的开关按钮。
      
           - RadioButton:单选按钮,只有选中和未选中状态。
      
           - RadioGroup:是RadioButton的集合,在同组内只能选中一个单选按钮。
      
           - Spinner:下拉列表,允许用户在多个选项中选择一个。
      
           - TimePicker:时间选择器,能让用户输入时间,有12小时和24小时模式。
      
           - DatePicker:日期选择器,能让用户输入日期。
      
           - ProgressBar:进度条,为用户提供某项工作的进度,比如后台正在做的事情。
      

    (四) 布局测试

    参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十七章:
    - 构建项目,运行教材相关代码
    -  修改布局让P290页的界面与教材不同
    - 提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分 
    

    结果如下:

    • 相关知识

      • 布局的类型

        • 线性布局LinearLayout:线性布局是一个视图组(ViewGroup),能在水平或者垂直的单一方向上将所有子元素排成一行。
        • 相对布局RelativeLayout:相对布局是一个将子视图显示在相对的位置上的布局。
        • 表格布局TableLayout:表格布局是在行、列中组合子元素的视图。
        • 绝对布局AbsoluteLayout:绝对布局能让你指定子元素的精确位置。
        • 帧布局FrameLayout:帧布局是一个屏幕上的占位符,你可以用它来显示单一视图。
        • 列表视图ListView:列表布局是可以滚动的,是用于显示子元素列表的视图组。
        • 网格视图GridView:网格视图是在二维可滚动的网格中显示子元素的视图组。
    • 参考RelativeLayout常用属性介绍来学习相对布局。

    (五) 事件处理测试

    参考《Java和Android开发学习指南(第二版)(EPUBIT,Java for Android 2nd)》第二十八章:
    - 构建项目,运行教材相关代码
    - 提交代码运行截图和码云Git链接,截图要有学号水印,否则会扣分
    

    p298的代码如下:

    int counter = 0;
        int[] colors = { Color.BLACK, Color.BLUE, Color.CYAN,
                Color.DKGRAY, Color.GRAY, Color.GREEN, Color.LTGRAY,
                Color.MAGENTA, Color.RED, Color.WHITE, Color.YELLOW };
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
        }
        @Override
        public boolean onCreateOptionsMenu(Menu menu) {
            getMenuInflater().inflate(R.menu.menu_main, menu);
            return true;
        }
        public void changeColor(View view) {
            if (counter == colors.length) {
                counter = 0;
            }
            view.setBackgroundColor(colors[counter++]);
        }
    

    当用户按下(或触碰)时钟的时候,会调用该方法并接受时钟对象。要修改时钟的颜色,需要调用其setBackgroundColor方法,传入一个颜色对象,从而实现触碰时钟改变颜色。

    结果如下:

    二、分析与总结

    (一)遇到的问题及解决方案

    • 问题1:写程序时出现了R变成红色,丢失的情况。

    • 问题1解决方案:参考R丢失

    (二)PSP

    步骤 耗时 百分比
    需求分析 5min 5%
    设计 10min 10%
    代码实现 50min 50%
    测试 15min 15%
    分析总结 20min 20%

    (三)参考资料

  • 相关阅读:
    封装一个通用递归算法,使用TreeIterator和TreeMap来简化你的开发工作。
    优化特性(Attribute)性能
    不需要了解任何底层知识,就可以汉化!Let`s go!!!
    颠覆你对方法调用的看法!
    实际项目中面向对象的最佳实践
    递归使用触发器
    关于稀疏数组
    121-django中的Http404处理
    120-在前端使用django-ckeditor,很简单,很方便
    119-用django实现评论功能
  • 原文地址:https://www.cnblogs.com/haoliberale/p/6882048.html
Copyright © 2020-2023  润新知