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

/* 安卓开发入门 */

涉及到了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入门经典dvd,Android开发入门经典实例 - My notes相关推荐

  1. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第三章:简单控件

    第 3 章 简单控件 本章介绍了App开发常见的几类简单控件的用法,主要包括:显示文字的文本视图.容纳视图的常用布局.响应点击的按钮控件.显示图片的图像视图等.然后结合本章所学的知识,演示了一个实战项 ...

  2. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第六章:数据存储

    第 6 章 数据存储 本章介绍Android 4种存储方式的用法,包括共享参数SharedPreferences.数据库SQLite.存储卡文 件.App的全局内存,另外介绍Android重要组件-应 ...

  3. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第五章:中级控件

    第 5 章 中级控件 本章介绍App开发常见的几类中级控件的用法,主要包括:如何定制几种简单的图形.如何使用几种选择按钮.如何高效地输入文本.如何利用对话框获取交互信息等,然后结合本章所学的知识,演示 ...

  4. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第四章:活动Activity

    第 4 章 活动Activity 本章介绍Android 4大组件之一Activity的基本概念和常见用法.主要包括如何正确地启动和停止活动页 面.如何在两个活动之间传递各类消息.如何在意图之外给活动 ...

  5. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——实战三:购物车

    6.5 实战项目:购物车(还未补全图片) 购物车的应用面很广,凡是电商App都可以看到它的身影,之所以选择购物车作为本章的实战项目,除了它使用广泛的特点,更因为它用到了多种存储方式.现在就让我们开启电 ...

  6. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第八章:高级控件

    本章介绍了App开发常用的一些高级控件用法,主要包括:如何使用下拉框及其适配器.如何使用列表 类视图及其适配器.如何使用翻页类视图及其适配器.如何使用碎片及其适配器等.然后结合本章所学 的知识,演示了 ...

  7. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第一章:Android开发环境搭建

    第 1 章 Android开发环境搭建 本章介绍了如何在个人电脑上搭建Android开发环境,主要包括:Android开发的发展历史是怎样的.Android Studio的开发环境是如何搭建的.如何创 ...

  8. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——第二章:Android App 开发基础

    第 2 章 Android App开发基础 本章介绍基于Android系统的App开发常识,包括以下几个方面:App开发与其他软件开发有什么不一 样,App工程是怎样的组织结构又是怎样配置的,App开 ...

  9. 2022 最新 Android 基础教程,从开发入门到项目实战【b站动脑学院】学习笔记——实战一:简易计算器

    1.界面设计 Windows计算器,它主要由上半部分的计算结果与下半部分的计算按钮两块区域组成,据此可创建一个界面相似的计算器App,同样由计算结果和计算按钮两部分组成,如图所示. 按照计算器App的 ...

最新文章

  1. 10分钟带你入门MATLAB
  2. 计算机文化基础教程问什么好难买到,问一个翻译的问题新编计算机文化基础(教程 – 手机爱问...
  3. 【AI-1000问】Face detection、alignment、verification、identification(recognization) 你能分的清楚吗?
  4. SpringMVC的XML配置解析
  5. android 上下偏差怎么写_详解 Android 热更新升级如何突破底层结构差异?
  6. SQLAlchemy schema.Column
  7. centos7上克隆虚拟机后设置静态IP无效的解决方法
  8. 数据之美系列5(转载)
  9. ios property 之 strong weak unsafe_unretained
  10. RANSAC算法与原理(二)
  11. linux 迁移类型,迁移到Linux前必须要知道的五个方面
  12. ALS算法的基本思想
  13. 关于JavaScript继承与原型链的一些理解
  14. python pyplot bar 参数_数据可视化之条形图(1):Axes.bar
  15. Ubuntu 10.10学习笔记
  16. matlab 此上下文中不允许函数定义,错误: 此上下文中不允许函数定义。怎么办
  17. rust快速升级墙指令_外服一键升级指令是啥呀
  18. wps手机版ppt动画效果_你不知道的WPS|仅这2个制作PPT的动画技能,就足够让你的PPT逼格瞬间提升...
  19. Android从网页中跳转到APP
  20. vue移动端项目微信公众号授权登录

热门文章

  1. 华为nova7pro的计算机,为什么说华为nova7pro在华为nova6面前只能算个“弟弟”?
  2. 强荐 | 渗透测试报告自动生成工具
  3. TextView添加横线
  4. FPGA-全局时钟缓冲IBUFG BUFG IBUFGDS ODDR2
  5. 疫苗之王的发家之路《转载》
  6. oracle NBA连续夺冠的题目
  7. 旅游规划 (25 分)
  8. javascript 改变 HTML 元素 element.innerHTML、.attribute、.setAttribute(attribute, value)、.style.property
  9. 游戏夜读 | RPG的美式和日式
  10. Go编译原理系列3(词法分析)