zoukankan      html  css  js  c++  java
  • 20169205 2016-2017-2 《移动平台应用开发实践》第8周学习总结

    20169205 2016-2017-2 《移动平台应用开发实践》第8周学习总结

    教材学习内容总结

    这四章的内容主要是对android studio的一些核心控件与视图及基本知识进行叙述。

    • 显示Options Menu

    1.在res/menu中编写菜单资源文件
    2. 在Activity中重写onCreateOptionsMenu和onOptionsItemSelected两个方法。

    • 上下文菜单

    要在相应的view上按几秒后才显示的,用于view,跟某个具体的view
    绑定在一起.
    ▪ 主要需要用到或重写Activity的以下方法:
    ▪ registerForContextMenu()为某个view注册context menu,一般在onCreate里面调用。
    ▪ onCreateContextMenu()创建context menu,context meun每次显示时都会调用这个函数。
    ▪ onContextItemSelected()处理选中的菜单项。

    • ListView
    1. 设置相关XML文件与Java源代码

    打开reslayoutactivity_main.xml,修改根元素为LinearLayout,同时加上本节要学习的控件。

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="@dimen/activity_vertical_margin"
        tools:context="com.zrthas.administrator.commoncontrol.MainActivity">
    
         <ListView 
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/listView_fun">
        </ListView>
    </LinearLayout>
    打开reslvaluesstrings.xml中,将相对的XML字段修改如下:
    
    <resources>
    <string name="app_name">常用组件测试</string>
    <string name="List_View">ListView演示</string>
    <string name="commonControl_List">常用Android演示</string>
    </resources>
    

    最后在Java源代码中添加对ListView的调用

    public class MainActivity extends AppCompatActivity {
    
        /*
        定义数组来表示listView要显示,也是我们学习哪些常用的控件
         */
        private static final String[] commonFunList = new String[]{
    
                "ListView控件演示",
                "ProgressBar控件演示",
                "GridView控件演示",
                "ScrollView控件演示",
                "DatePicker控件演示"
        };
    
        //定义listView
        private ListView listView ;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            listView = (ListView) findViewById(R.id.listView_fun);
            listView.setAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1,
                    commonFunList));
        }
    }
    
    1. 重要方法说明

    在Java代码中,可以看到,Android对ListView的调用主要是由方法setAdapter。具体详细介绍:Android之Adapter用法总结。目前使用只要记得,要装配这些数据就需要一个连接ListView视图对象和数组数据的适配器来两者的适配工作,ArrayAdapter的构造需要三个参数,依次为this,布局文件(注意这里的布局文件描述的是列表的每一行的布局,android.R.layout.simple_list_item_1是系统定义好的布局文件只显示一行文字,数据源(一个List集合)。同时用setAdapter完成适配的最后工作。

    在setAdapter中的simple_list_item_1。为什么我们自己设置的TextView呢?这主要由于目前我们所使用的ListView为系统自带控件。它里面包含了simple_list_item_1、simple_list_item_2、two_line_list_item等。现在对这几个布局进行详解。

    3.1 simple_list_item_1布局

    此布局是最简单的一种布局方式。只含有一个TextView。作用于单行展示。就如我们运行后程序的列表。

    3.2 simple_list_item_2布局

    这个布局是双层布局,它包含两个TextView:android.R.id.text1和android.R.id.text2。此布局是上层为大字体,下层为小字体。

    3.3 two_line_list_item布局

    与simple_list_item_2布局一致包含两个TextView。而跟它不同的是,两层文字的大小都是一样大小的。

    1. Activity页面间跳转

    经过几前章的学习,可能同学们对生成一个简单的ListView顺手而来。那我们根据以前所学习的内容,对ListView中的列表内容都创建相应的页面。同时点击列表,会跳转至相应的Activity中。下面分为两步:

    4.1 判断点击哪个Item

    这里面我们调用setOnItemClickListener监听器。

    listView.setOnItemClickListener(
                    new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                           setTitle("您点击了第"+position+"个项目");
                        }
                    }
            );
    

    onItemClick后面有4个参数,乍看直接晕菜,那么每个参数究竟是何意义呢.
    举个例子会理解的更快:
    X, Y两个listview,X里有1,2,3,4这4个item,Y里有a,b,c,d这4个item。如果你点了b这个item。如下:
    arg0相当于listview Y适配器的一个指针,可以通过它来获得Y里装着的一切东西,再通俗点就是说告诉你,你点的是Y,不是X
    arg1是你点的b这个view的句柄,就是你可以用这个view,来获得b里的控件的id后操作控件
    arg2是b在Y适配器里的位置(生成listview时,适配器一个一个的做item,然后把他们按顺序排好队,在放到listview里,意思就是这个b是第position号做好的)
    arg3是b在listview Y里的第几行的位置(很明显是第2行),大部分时候position和id的值是一样的,如果需要的话,你可以自己加个log把position和id都弄出来在logcat里瞅瞅
    而setTitle是将应用的标题改为当前所点击的行数。

    获取到是点击哪个Item后,我们可以对这个Item进行跳转另一个Activity操作。在此之前,对应每个界面都生成一个布局文件与java文件。同时在AndroidManifest.xml添加新增的activity。

    首先,在onCreate(Bundle)前加个方法toNewActivity(int)。这个方法是用来判断用户点击哪个Item,由此跳转到哪个Activity。以下是简单的实现:

    /*** 根据Item的position位置来判断具体跳转至哪个Activity */
     private void toNewActivity(int position){
            Intent i;
            switch (position){
                case 0:
                    i = new Intent(MainActivity.this,ListViewActivity.class);
                    break;
                case 1:
                    i = new Intent(MainActivity.this,ProgressBarActivity.class);
                    break;
                case 2:
                    i = new Intent(MainActivity.this,GridViewActivity.class);
                    break;
                case 3:
                    i = new Intent(MainActivity.this,ScrollViewActivity.class);
                    break;
                case 4:
                    i = new Intent(MainActivity.this,DatePickerActivity.class);
                    break;
                default:
                    i = new Intent(MainActivity.this,MainActivity.class);
                    break;
            }
            startActivity(i);
        }
    

    在原来对ListView监听器中,把setTitle()方法改成toNewActivity()。

    listView.setOnItemClickListener(
                    new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            toNewActivity(position);
                        }
                    }
            );
    

    最后运行下项目,点击各个不同的Item,会跳转至不同的Activity。

    • GirdView使用
      GridView(网格视图)是按照行列的方式来显示内容的,一般用于显示图片,图片等内容,比如实现九宫格图,用GridView是首选,也是最简单的。主要用于设置Adapter。
      GridView常用的XML属性:
      Android:columnWidth 设置列的宽度。

    android:gravity 设置此组件中的内容在组件中的位置。可选的值有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、center、fill、clip_vertical可以多选,用“|”分开。

    android:horizontalSpacing 两列之间的间距。

    android:numColumns 设置列数。

    android:stretchMode 缩放模式。

    android:verticalSpacing 两行之间的间距。

    教材学习中的问题和解决过程

    打开Android Studio,新建一个Android项目,然后发现可视化编辑界面无法正常显示,也就是Design视图

    错误截图

    解决

    这是Android SDK 版本问题导致的错误,更改SDK版本即可
    若只有一个可用API,可通过SDK Manager安装其它版本的SDK(API),点击工具栏SDK Manager或点击File->Settings->Appearance & Behavior -> System Settings -> Android SDK 进入SDK安装选项
    安装新的SDK后,问题解决

    上周重点错题总结

    题目

    Multi-dimensional arrays that contain arrays of different lengths in any one dimension are called __________.(包括不同长度数组的多维数组叫做

    A .ragged arrays(锯齿状数组)
    B .static arrays(静态数组)
    C .two-dimensional arrays(二维数组)
    D .constant arrays(常量数组)
    E .overloaded arrays(重载数组)

    正确答案: A

    解析

    Ragged arrays are multi-dimensional arrays that contain arrays at the same dimension with differing lengths.

    学习进度条

    码云项目地址

    代码托管

    因为重新git了一下,可能周的显示不是很正常

    学习目标

    时间 学习时间目标 实际进行时间
    第一周 8 8
    第二周 10 8.5
    第三周 12 10.5
    第四周 12 12
    第五周 12 11
    第六周 12 13
    第七周 12 12
    第八周 12 12

    希望能够通过系统地学习,探索一些开源项目并改进功能,养成良好的开发习惯,形成一套完整的android生态知识体系,并能完全自主开发一款具有一定实用价值的app。

  • 相关阅读:
    坦克大战(完结篇)
    坦克大战第一节——画出自己的坦克(新手篇)
    jq动画插件,自制基于vue的圆形时钟
    原生js数值开根算法
    html引入公共模块
    js组件
    前端不缓存,ajax不缓存,js操作cookie
    c++打印实心菱形,空心三角形,十字星,空心正方形,实心平行四边形
    css元素水平垂直居中
    vue日历/日程提醒/html5本地缓存
  • 原文地址:https://www.cnblogs.com/wule/p/6737964.html
Copyright © 2011-2022 走看看