本文是学习过程记录,包含页面跳转功能的实现,以及项目结构的初步理解。

创建新的Activity

我们假设有两个页面,一个Main作为默认启动页面,上面有一个按钮,点击可以跳转到另一个home页面。

新建名称为app01的Empty Activity项目之后,留意底部状态条提示,稍等gradle完成初始化。

在项目文件列表右击【app/java/com.xxx.app01】文件夹,依次选择【New/Activity/Empty Activity】创建一个新的Activity。

在弹出的窗口中设置Activity Name为HomeActivity,下面的Layout Name自动变为activity_home,下面Source Langua选java。

这个操作实际上还会产生两个效果:

  • 在【app/mainifests/AndroidMainiFest.xml】中自动添加一行,缺失这一行的话会出错。
  • 在【app/res/layout】下面生成一个activity_home.xml界面文件。

我们可以打开界面文件activity_home.xml,在Design模式下,先从Palette面板拖拽一个【Layouts/LinearLayout】,再拖拽一个【TextView】到layout上面,修改下文字显示这是第二个页面。

注意代码中的只保留了三个属性,并且width和height都设置成了match_parent,即横竖向都是充满页面。如果我们要使它在边缘留有边距,可以使用android:layout_margin="8sp"或者android:padding="4sp"这样的语法,注意打字时候不要输入andro...,而是直接输入paddi然后从下拉提示选择即可。

注意使用Design预览窗口左上角的眼睛,选Show system UI可以显示画面顶部的状态条和标题栏。

很多属性可以在Design界面中修改,如下图所示,注意textView处于Linearlayout的子层,这样组织是为了方便修改。

点击上图中textView右侧的黄色感叹号,点击下面弹出的文字底部的【Fix】按钮,弹出Extract Resource窗口。这是由于在按钮中的文字不应直接使用文字,而应该使用变量,这是为了适配不同的语言,比如英文中按钮是Start中文是开始,那么应该用哪个呢?都不用!而是用一个叫btnLabel的变量,在英文系统中btnLabel='Start'中文系统中自动btnLabel='开始'。下面设置了一个home_welcome的变量,它默认值等于这是Home页面!.

按钮设置

返回到activity_main.xml,添加一个linearLayout,里面添加一个TextView和一个Button。可以在代码里利用Margin和Padding调整边距。我们设置按钮的id为btn_go_home。

修改MainActivity.java,我们把整个Activity改为可点击,并添加一个点击函数,代码如下:

package com.zhyuzh.app01;import androidx.appcompat.app.AppCompatActivity;import android.os.Bundle;import android.view.View;public class MainActivity extends AppCompatActivity implements View.OnClickListener {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);    }    @Override    public void onClick(View view) {    }}

注意新增的implements View.OnClickListener这是让这个页面点击可被处理,它必须配合下面的onClick(View view)函数才行。注意这里不用输入@Override...只要输入onClick(小写on开头)就能自动提示完成。

如何让按钮被点击时候执行这个onClick函数呢?当然我们可以从Design页面中找到onClick下拉菜单修改。但这里我们不用这个方法,而是直接修改代码。

上面代码中的onCreate函数就是创建的时候就会运行的函数,我们在这里添加下面的代码。

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    findViewById(R.id.btn_go_home).setOnClickListener(this);}

上面代码中setContentView(R.layout.activity_main)其实是和【res/layout/activity_main.xml】建立关联。我们新加的findViewById是利用我们之前设置的按钮id来获取到按钮,然后添加监听器setOnClickListener(this)。

跳转函数

我们需要使用Intent意图才能实现跳转。换而言之,就是Android禁止我们直接向页面跳转,而是必须把页面包裹成为一个Intent意图才能跳。

修改onClick代码如下。

@Overridepublic void onClick(View view) {    Intent go_home=new Intent();    go_home.setClass(this,HomeActivity.class);    startActivity(go_home);}

保存之后,在模拟器内运行代码,就可以默认打开activity_main页面布局,点击按钮跳转到activity_home页面。

如果有多个按钮,分别跳转到不同的页面,怎么办?我们可以在onClick函数中使用switch分支,根据不同的按钮的id执行不同的操作。代码如下所示:

@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    findViewById(R.id.btn_go_home).setOnClickListener(this);    findViewById(R.id.btn_go_category).setOnClickListener(this);}@Overridepublic void onClick(View view) {    switch (view.getId()){        case R.id.btn_go_home:            Intent go_to1=new Intent();            go_to1.setClass(this,HomeActivity.class);            startActivity(go_to1);            break;        case R.id.btn_go_category:            Intent go_to2=new Intent();            go_to2.setClass(this,CategoryActivity.class);            startActivity(go_to2);            break;    }}

注意onCreate中也要新增findViewById(R.id.btn_go_category)...。注意switch每个case后面要有break终止。

修改Toolbar标题

在onCreate中添加代码getSupportActionBar().setTitle("Welcome!");修改标题。完整一点如下:

ActionBar actionBar = getSupportActionBar();if(actionBar != null){    actionBar.setTitle("Main");}

所有元素居中

修改LinearLayout属性,添加android:gravity="center_horizontal"属性可以使所有元素居中。同样android:gravity="center_vertical"可以实现页面竖向居中。

重命名文件

由于很多变量都依赖于文件名称索引,所以在AndroidStudio中不能直接重命名文件,而应该使用右键【Refactor/Rename…】。


未完待续。
欢迎批评指正,交流学习。

安卓打开第二个activity就崩溃_零基础安卓开发起步(三)相关推荐

  1. 九宫怎么排列和使用_剪映零基础入门教程第三十七篇:一学就会系列之九宫格小程序配音...

    很多玩儿抖音的朋友都看过九宫格视频,但是并不是每个玩抖音的人都会制作这个九宫格视频,实际这个需要借助小工具来帮忙,而常用抖音的朋友们会对剪映更加熟悉一些,且九宫格视频在剪映内的制作方式则比较简单.那么 ...

  2. 数据结构和算法_零基础入门01

    数据结构和算法_零基础入门01 一.数据结构是什么? 逻辑结构.物理结构 二.算法 算法的五个基本特征 算法设计的要求 b站学习小甲鱼的数据结构与算法,自留笔记. 程序设计=数据结构+算法 一.数据结 ...

  3. agent python实现 建模_零基础三天学会Python爬虫(第二天)

    一.Python与urllib2 现在已经迫不及待的想尝试一下url和网络爬虫的配合关系了.我们上一届已经介绍过了,爬虫就是把URL地址中的网络资源读取出来,然后处理(保存到本地,或者打印等等).本篇 ...

  4. apk安装到电视上看不到图标_零基础搭建电视直播APP平台第二弹(修改APP)

    大家好 , 我是阿尘,欢迎来到:极梦小屋. 由于公众号改版,建议大家 星标置顶 本公众号,就可以第一时间接收到我们所推荐的精品资源啦! 为了大家更方便的交流和可以不错过每天的分享,所以特意建了一个交流 ...

  5. python学会爬虫要多久_零基础三天学会Python爬虫(第二天)

    一.Python与urllib2 现在已经迫不及待的想尝试一下url和网络爬虫的配合关系了.我们上一届已经介绍过了,爬虫就是把URL地址中的网络资源读取出来,然后处理(保存到本地,或者打印等等).本篇 ...

  6. app后台运行会给服务器发信息吗_零基础搭建电视直播APP平台第一弹(支持安卓+电视盒子)...

    大家好 , 我是阿尘,欢迎来到:极梦小屋. 由于公众号改版,建议大家 星标置顶 本公众号,就可以第一时间接收到我们所推荐的精品资源啦! 为了大家更方便的交流和可以不错过每天的分享,所以特意建了一个交流 ...

  7. 学java还是安卓_零基础学安卓好还是学java好

    零基础学安卓好还是学java好 关于Java的学习很多同学都有这样或者那样的疑问,比如我是自学Java好呢还是参加Java培训好呢?Java好学吗?安卓和java哪个难学等等.今天我们就先简单的来看两 ...

  8. 爬虫python代码广告_零基础掌握百度地图兴趣点获取POI爬虫(python语言爬取)(代码篇)...

    我是怎么想的,在新浪博客里写代码教程. 这篇博客的内容同步到了CSND博客中,那里不限制外链,也可以复制代码. http://blog.csdn.net/sinat_41310868/article/ ...

  9. ps文字换行_零基础一周内熟悉使用PS基础工具【Photoshop教程二】

    零基础一周内熟悉使用PS基础工具[Photoshop教程一]这篇的后台数据显示有很多知友都有收藏了.由此可见现在的视频教程,网络上太多太多但,但好多知识都太"碎片化"今天学习这个技 ...

最新文章

  1. R语言row.names函数为dataframe、matrix设置行名称实战
  2. 关于VMware Linux 虚拟机忘记root 密码找回
  3. 测试集的构成比例对网络分类性能的影响cp
  4. 千万数据去重_mysql去重,3亿多数据量
  5. Cloudera Manager是什么?
  6. c 语言实例大全,c语言实例大全
  7. 深度模型压缩论文(01)- Meta Filter Pruning to Accelerate Deep Convolutional Neural Networks
  8. 小程序入门学习20--springboot之集成mybatis
  9. 数据结构之二叉树--转载
  10. 10分钟教你从零开始python_10分钟教你从零开始学python入门
  11. 利用POI将PPT转换为图片
  12. 【python量化】用时间卷积神经网络(TCN)进行股价预测
  13. 咸鱼Micropython— machine库
  14. Free C/C++ Libraries(免费的C/C++库)
  15. 预训练模型 Fine-tuning
  16. 微信公众平台可以修改微信号了,微信号怎么设置好。
  17. Java == equals() hashCoed()的区别
  18. 关于端口被占用的解决办法
  19. aardio - inputBox 漂亮的输入框
  20. ADSL宽带80和8080端口被封

热门文章

  1. 使用jQuery创建模态窗口登陆效果
  2. C#生成CHM文件(应用篇)
  3. C# 调用c++ 实例
  4. android studio 修改文件后出现类型转换错误
  5. linux 防arp 带宽,linux下防arp
  6. createplayer 多次调用 位置错误_Programming in Lualua学习第6期 Lua编译执行与错误
  7. js点击按钮改变字体大小并给他颜色_如何在Elementor中修改文本的字体、大小、颜色、样式...
  8. python怎么安装json_python里面怎么安装json包
  9. 平面设计师常用的网站|素材路上
  10. linux设备文件生成,Linux设备文件自动生成(示例代码)