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

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

展示列表

$$ activity_main.xml 布局文件

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

android:id="@+id/teacher_listView"

android:layout_alignParentLeft="true"

android:layout_alignParentStart="true" />

设置Adapter

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

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

注意初始化Adapter的代码:

ArrayAdapter teacherAdapter = new ArrayAdapter (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 getAllTeachers() {

List

}

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

res/layout

*创建自定义的ArrayAdapter

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

public class TeacherAdapter extends ArrayAdapter { }

*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)