day_01 解析简单的程序

  • 就以上一节FirstProgram为例,请看下图:

 

01、AndroidManifest.xml是整个项目的配置文件,非常重要,每个应用程序里必须存在的xml文件,且名字不可以改变,四大组件的使用必须在此处声明注册才可使用,而且还可以在这里声明权限,例如打电话的权限等等。

02、MainActivity是一个活动,想使用须得在AndroidManifest.xml里注册才可以,如上图里的代码,它跟JAVA里的类使用方法大同小异,使用前需要继承Activity(AppCompatActivity是它的子类),它俩有什么区别呢?话不多说,上图来解释:

 

(1)AppCompatActivity

 

 

(2)Activity

 

区别是不是显而易见?你们可能说没太大区别嘛,一开始我也不注意这个,后来学到菜单那里,发现了不对劲,如果是第一种情况,菜单选项就会出现在标题的旁边有竖着的三个点,如果继承了Activity,你得点击手机上的返回键附近的菜单选项才会出现菜单。这里不多说了,等着到菜单menu那里才具体讲解。

02、activity_main.xml在layout文件夹下面,它里面包含着布局,就是显示出Hello Wrold的布局。

我认为初学者最应该知道的先是这些,等以后用到其他的时候在一一讲解。

  • 解析这三个里面的代码。

  MainActivity

    

1 public class MainActivity extends AppCompatActivity {
2 
3     @Override
4     protected void onCreate(Bundle savedInstanceState) {
5         super.onCreate(savedInstanceState);
6         setContentView(R.layout.activity_main);
7     }
8 }

 

 

 MainActivity要继承AppCompatActivity(活动),然后必须重写onCreate方法,onCreate方法里面要用setContentView()引入布局,R.layout.activity_main中,R代表当前所在的包,layout代表layout文件夹,activity_main代表layout文件夹下的布局

  activity_main.xml

  

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <RelativeLayout
 3     android:id="@+id/activity_main"
 4     android:layout_width="match_parent"
 5     android:layout_height="match_parent"
 6     xmlns:android="http://schemas.android.com/apk/res/android"
 7    >
 8 
 9     <TextView
10         android:layout_width="wrap_content"
11         android:layout_height="wrap_content"
12         android:text="Hello World!"/>
13 </RelativeLayout>

 

 

 

  RelativeLayout是一个相对布局,暂且不管它,真正显示Hello World的是布局内的TextView,这个相当于JAVA里swing里的JLabel,添加后会显示出一行字,是通过android:text="Hello World!" 赋值的。

  AndroidManifest.xml

  

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 3           package="com.zywwgx.firstprogram">
 4 
 5     <application
 6         android:allowBackup="true"
 7         android:icon="@mipmap/ic_launcher"
 8         android:label="@string/app_name"
 9         android:supportsRtl="true"
10         android:theme="@style/AppTheme">
11         <activity android:name=".MainActivity">
12             <intent-filter>
13                 <action android:name="android.intent.action.MAIN"/>
14 
15                 <category android:name="android.intent.category.LAUNCHER"/>
16             </intent-filter>
17         </activity>
18     </application>
19 
20 </manifest>

 

 

 

这个便是大名鼎鼎的注册活动的地方,

 

11         <activity android:name=".MainActivity">
12             <intent-filter>
13                 <action android:name="android.intent.action.MAIN"/>
14 
15                 <category android:name="android.intent.category.LAUNCHER"/>
16 </intent-filter> 17 </activity>

  这是注册的MainActivity。


  • 这次咱们创建一个完全空的程序,从头开始自己动手写。
  (1)跟上面的一样先新建一个工程,起名为SecondProgram



  (2)不同的是,这次我们选择第一个,Add No Activity(没有活动,上次那个是Empty Activity 是自动帮你添加了一个活动),为了加深理解,这次我们自己动手。



  (3)创建完后,有没有发现都是空的?我故意点开了注册活动的xml,里面也没有注册过活动。



  (4)那我们先创建活动,右击(如图),点击new,再点击Java Class ,创建出一个新的类,名字可以随便起。

  

  

  (5)继承AppCompatActivity

  

 

  (6)重写onCreate方法

 

   (7)最后一步,用setContentView();方法引入布局。有报错先不用管,因为还没有填写R.layout.****。

  

  (8)在此之前,要引入哪个布局呢?这就应该在res下创建一个layout文件夹。

  

 
 
  (9)在layout文件夹下创建activity_main。

  

  (10)按照个人习惯起名字

  
  (11)这是预览效果图,点击Text,切换到代码编辑模式

  


  

  (12)在LinearLayout线性布局里添加TextView,text输出你想输出的文字,width和height代表宽高,这里选择wrap_content,意思是随着字的多少大小决定宽高。

  

  (13)哇,终于完成了布局,那么现在可以在活动里添加布局了。
  
  

  (
14)最后一步,是最重要的一步,打开AndroidManifest.xml,注册活动,先记住这么写,以后在介绍含义。
  
  


  (end)好了,可以运行了。

  

  是不是有点小激动?别急更好玩的还在后面。
  

  自学的时间不长,专业术语也不专业,可能会有少许错误,认真接受批评(*^o^*)


 

转载于:https://www.cnblogs.com/ywyh2018/p/9430992.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/570571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

时区与程序设计

时区的定义 我们使用经纬度[1]来标识地球上的任意一个点。 理论时区 不像纬度有赤道作为自然的起点&#xff0c;经度没有自然的起点而使用经过伦敦格林尼治天文台旧址的子午线作为起点。 理论时区的宽度是15&#xff0c;所以一共有 360 / 15 24 个时区&#xff0c;一天有 24 小…

JSP实例-彩色验证码

image.java用于产生彩色验证码&#xff0c;其代码如下&#xff1a; package test; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.io.IOException; import java.io.OutputStream; import java.ut…

P1678 烦恼的高考志愿

题目背景 计算机竞赛小组的神牛V神终于结束了万恶的高考&#xff0c;然而作为班长的他还不能闲下来&#xff0c;班主任老t给了他一个艰巨的任务&#xff1a;帮同学找出最合理的大学填报方案。可是v神太忙了&#xff0c;身后还有一群小姑娘等着和他约会&#xff0c;于是他想到了…

Java代码实现Fibonacci数列

Fibonacci数列 1.定义&#xff1a; 0, 1, 1, 2, 3, 5, 8, 13, 21, . . .; f0 0, f1 1, fn fn−1 fn−2 for n ≥ 2. 2.两种实现算法&#xff1a; 2.1递归&#xff08;recursive&#xff09; T(n)>2n/2证明: T(n)T(n−1)T(n−2)>2T(n−2)>22T(n−4)>...>2n/2T…

套路:想戒手机?试试把屏幕变灰

简评&#xff1a;园长试过了&#xff0c;瞬间不想再看手机&#xff0c;一股浓浓的性冷淡&#xff08;无能&#xff09;风&#xff0c;此时我只想去拥抱真实的世界。 我代表原作者。 我的手机已经变灰了&#xff0c;感觉很不错&#xff0c;不再沉迷。 为了戒掉手机瘾&#xff0c…

判断一个数是否存在于一个非递减的有序数列中 算法(Ordered Search Problem)

1. Description Given a list of nnumbers in non-decreasing order A{a1,a2,⋯,an}such that a1≤a2≤⋯≤anand a number x, the objective is to determine if xis present in the list A2. Algorithm Algorithm 1. Linear Search Algorithm Iterate through nnumbers to …

(4.12)全面解析-SQL事务+隔离级别+阻塞+死锁

30分钟全面解析-SQL事务隔离级别阻塞死锁 转自&#xff1a;https://blog.csdn.net/slowlifes/article/details/52752735 2016年10月07日 23:17:46 阅读数&#xff1a;1097阅读目录 概述&#xff1a;一、事务二、锁三、阻塞四、隔离级别五.死锁以前总是追求新东西&#xff0c;发…

mac启动mysql,apache,php

在用php编写网站之前&#xff0c;先要启动之前搭建好的环境。 1.启动mysql &#xff08;1&#xff09;在system preference的最底部有mysql控制图标&#xff1a; &#xff08;2&#xff09;点击mysql图标&#xff0c;启动mysql&#xff1a; 2.启动apache&#xff1a; 在term…

如何在命令长度受限的情况下成功get到webshell(函数参数受限突破、mysql的骚操作)...

0x01 问题提出 还记得上篇文章记一次拿webshell踩过的坑(如何用PHP编写一个不包含数字和字母的后门)&#xff0c;我们讲到了一些PHP的一些如何巧妙地绕过数字和字母受限的技巧&#xff0c;今天我要给大家分享的是如何在命令长度受限的情况下成功get到webshell&#xff0c;以及关…

iOS开发造轮子 | 通用占位图

https://www.jianshu.com/p/beca3ac24031 实际运用场景&#xff1a; 没网时的提示view&#xff0c;tableView或collectionView没内容时的展示view&#xff0c;以及其它特殊情况时展示的特定view。如&#xff1a; 常见的几种情况我的目标&#xff1a; 对以上几种情况的展示view做…

java 计算26个字母在一段文本中出现的频率(保留小数点后4位)

public class FrequencyCalculator {public static void main(String[] args){//定义需要计算字母出现频率的文本String text"some off#acebooksea3rl255 yinvestorssoldofftheirstockatthefirs" "tchancetheygotbutceomarkzuckerbergishangingontohissharesfor…

string赋值-单引号和双引号的区别(php)

在赋予一个string值的时候&#xff0c;可以用单引号或者双引号。 1.单引号和双引号的区别&#xff1a; 单引号&#xff1a;不会翻译变量。 双引号&#xff1a;会翻译变量&#xff0c;会将变量替换为之前赋予变量的值。 例子&#xff1a; &#xff08;1&#xff09;单引号&a…

Hibernate常用的Java数据类型映射到mysql和Oracle

研究了常用的Java基本数据类型在mysql和oracle数据库的映射类型。这里使用的是包装类型做研究&#xff0c;一般在hibernate声明的时候最好不要用基本类型&#xff0c;因为数据库中的null空数据有可能映射为基本类型的时候会报错&#xff0c;但是映射到包装类型的时候值为null&a…

Front End Accessibility Development Guide

Header Carefully write heading(h1,h2,h3) for screen reader. Alternative Image Provide alt text for both essential and functional images. Provide empty alt text (alt””) for decorative images. Don’t repeat the alt text of an image in the adjacent text. De…

详细的Windows下安装 binwalk

1. https://github.com/ReFirmLabs/binwalk到这里下载binwalk&#xff0c;下载后解压。 2. 找到下载后的文件夹&#xff0c; 在这里要进行安装步骤&#xff0c;一边按着shift&#xff0c;一边按着鼠标右键&#xff0c;点击在此处打开命令窗口。 输入python setup.py install 安…

各大浏览器清除缓存(cache)详细步骤

1. Firefox 1.1 选择“Options”&#xff1a; 1.2 选择“Advanced”->“Network”->“Cached Web Content”&#xff0c;点击“Clear Now”&#xff1a; 2. Chrome 2.1 选择“Settings”&#xff1a; 2.2 点击页面底部“Show advanced settings”&#xff1a; 2.3 选择…

使用 angular directive 和 json 数据的 D3 带标签 donut chart示例

利用angular resource加载priorityData.json中的json数据&#xff0c;结合D3画出甜甜圈图。运行index.html结果如图所示&#xff1a; priorityData.json中json数据如下&#xff1a; { "priority":{ "Blocker":12,"Critical":18,"Major&qu…

第一个express app 详细步骤

1. 全局安装node.js&#xff08;请参考网上教程&#xff09;。 如何判断是否全局安装成功&#xff1f;打开命令行终端&#xff0c;进入任意文件夹&#xff0c;输入node&#xff0c;不报错。 2. 安装express 2.1 创建app文件夹。并在此文件夹下创建文件package.json如下&#…

Angularjs Nodejs Grunt 一个例子

做了一个简单的示例&#xff0c;目的是记录环境配置以及这套框架的结构流程。 1.配置环境 默认nodejs已安装。 安装以下模块&#xff1a;express&#xff08;nodejs框架&#xff09;,grunt&#xff08;javascript task runner&#xff09;,grunt-contrib-watch&#xff08;g…

PHP 常用设计模式 (转载)

1.单例模式 单例模式顾名思义&#xff0c;就是只有一个实例。作为对象的创建模式&#xff0c; 单例模式确保某一个类只有一个实例&#xff0c;而且自行实例化并向整个系统提供这个实例。 单例模式的要点有三个&#xff1a; 一是某个类只能有一个实例&#xff1b;二是它必须自行…