美文网首页Coding
Android开发入门经典实例 - My notes

Android开发入门经典实例 - My notes

作者: 程序猪小羊 | 来源:发表于2018-05-10 15:03 被阅读2次

    /* Android开发入门经典实例 */ My notes

    https://www.tianmaying.com/tutorial/a-simple-sample-for-android-development/repo

    /* 安卓开发入门 */

    涉及到了Android开发中的一些关键知识,比如:

    • 配置开发环境
    • App中一个屏幕的抽象: Activity
    • 屏幕之间的跳转: Intent
    • 构成屏幕展示的视图组件:显示图片的 ImageView ,显示文字的 TextView ,把组件组成一个列表的 视图 ListView
    • 通过 Adapter 来控制模型和视图组件之间通信,即如何在视图上展示特定的数据 通过事件来处理用户的交互: OnClickListener

    MainActivity 的代码骨架,这个Activity就代表App启动的 时候,我们看到的那个屏幕。这个Java文件定义了一个 Activity ,当应用运行时, MainActivity 类启 动一个 Acitivty

    并加载 activity_main.xml 布局文件,将其显示在屏幕上。

    Acitvity 和 layout 的 关联是在 MainActivity 中 onCreate() 方法里完成的:setContentView(R.layout.activity_main);

    • app/src/main/AndroidManifest.xml

    Android Manifest文件是描 述Android应用的基本信息,并定义了应用中的各个组件(Activity是一种组件)。

    • app/src/main/res 目录下包含了应用所需要的资源文件:

    drawable<density>/ - 图片资源文件 layout/ - 用户界面布局描述文件
    menu/ - 应用的菜单布局
    values/ 常量值例如字符串、颜色数值等

    展示列表

    $$ activity_main.xml 布局文件

    android:id="@+id/teacher_listView" 定义了这个 ListView 的ID为 teacher_listView .

    <ListView android:layout_width="wrap_content" android:layout_height="wrap_content"

    android:id="@+id/teacher_listView"

    android:layout_alignParentLeft="true"

    android:layout_alignParentStart="true" />

    设置Adapter

    用来将数据传递给 ListView 的适配器是 ArrayAdapter 。这里我们传入的是一个字符串的数组,因此我

    们创建一个 ArrayAdapter<String> 类。
    这部分代码添加到 MainActivity.java 的 onCreate 方法中:

    注意初始化Adapter的代码:

    ArrayAdapter<String> teacherAdapter = new ArrayAdapter<String> (this, android.R.layout.simple_list_item_1, Teacher.getAllTeachers() );

    this, 当前的Activity

    android.R.layout.simple_list_item_1, 列表元素 (即列表中的每一行)布局

    Teacher.getAllTeachers() 所有数据构成的List,即数据源

    优化模型 - 给 Teacher 类增加一些属性

    public Teacher(String name, int imageId, String desc) {

    this.name = name;

    }

    public static List<Teacher> getAllTeachers() {

    List

    }

    改进列表 - 新的布局 - 加入图片 xml

    res/layout

    *创建自定义的ArrayAdapter

    我们创建一个自定义的ArrayAdapter。我们创建一个命名为 TeacherAdapter 的类, 让其继 承 ArrayAdapter<Teacher> ,同时提供一个构造函数。

    public class TeacherAdapter extends ArrayAdapter<Teacher> { }

    *getView() 方法的重载实现

    listView.setAdapter

    在 MainActivity.java 中的代码也需要做相应的修改,此时我们要创建一个 TeacherAdapter 的对象, 并将其设置为 listView 的Adapter。

    理解:

    ArrayAdapter - 大框架 - 按行排列

    TeacherAdapter - 每一行 的内容 - ImageView,ImageView

    我们已经了解如何创建Activity中的视图,如何通过Adapter给视图传递数据。

    创建第二个Activity

    teacher_item.xml 布局的编辑,我们往预览区中拖入一个 ImageView 和 TextView

    TeacherAdapter 的 getView() 方法,在最后一条 return 语句前加入:

    在返回 oneTeacherView 之前,设置一个 OnClick 点击事件的监听器,当事件发生的时 候,就会执行 public void onClick(View v) 内部的代码。

    oneTeacherView.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View v) {

    // 这里进行跳转

    }

    });

    oneTeacherView是一个布局(layout)

    Activity的跳转:Intent

    public void onClick(View v) {
    // 初始化一个准备跳转到TeacherDetailActivity Intent
    Intent intent = new Intent(getContext(), TeacherDetailActivity.class);

    // 准备跳转
    getContext().startActivity(intent);

    }

    通过Intent传递参数

    设置Intent的Extra数据

    Intent 的 putExtra 方法就是用来传递参数的,我们只需在初始化 Intent 对象之后把老师的数据传递 进去即可。

    需要注意的一点是,为了访问 teacher 变量,需要在申明的时候加上 final 修饰符。

    (final关键字可以用来修饰类、变量、方法。final变量不能重新赋值,子类不能覆盖父类的final方法,final类不能有子类。)

    public class TeacherAdapter

    public void onClick(View v) {

    //

    TeacherDetailActivity Intent
    Intent intent = new Intent(getContext(), TeacherDetailActivity.class);

    //

    Intent Teacher TeacherDetailActivity intent.putExtra("teacher_image", teacher.getImageId());

    intent.putExtra("teacher_desc", teacher.getDesc());

    //

    TeacherDetailActivity Intent

    getContext().startActivity(intent); }

    根据Intent数据展示内容

    public class TeacherDetailActivity - onCreate() method

    @Override
    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState); setContentView(R.layout.activity_teacher_detail);

    // 从Intent 获取数据
    int imageId = getIntent().getIntExtra("teacher_image", 0); String desc = getIntent().getStringExtra("teacher_desc");

    // 获取特定的视图
    ImageView imageView = (ImageView) findViewById(R.id.teacher_large_imageView); TextView textView = (TextView) findViewById(R.id.teacher_desc_textView);

    // 根据数据设置视图展现

    imageView.setImageResource(imageId);

    textView.setText(desc);

    }

    相关文章

      网友评论

        本文标题:Android开发入门经典实例 - My notes

        本文链接:https://www.haomeiwen.com/subject/oxnzrftx.html