Android 第二天 studio项目结构

今天Android学习第二天

1.Android项目结构

2. Activity生命周期

3.Studio使用

4.button点击打开另一个activity

5.组件定义及相关组件介绍

6.资源组织及访问

7.Service 生命周期


题外话:Studio(Android开发工具) XCode(Apple开发工具)

a.Studio输入提示区分大小写,确实不方便,这点不如XCode好用。

b.Studio在资源组织和访问方便统一性比较高,不需要用户再考虑资源如何放置,灵活性不够,但对目前Android小白的我还是挺好用的。

c.AndroidManifest.xml实现松解耦,不需要遍地引用头文件。iOS上的sting方式实现页面间跳转与此设计模式一致。


一、Android项目结构

Android 第二天 studio项目结构_第1张图片
Android项目架构
Android 第二天 studio项目结构_第2张图片
目录说明

1.无论您作为应用程序的一部分开发什么组件,都必须在AndroidManifest.xml中声明其所有组件。这个文件作为Android OS和应用程序之间的接口,所以如果没有在这个文件中声明你的组件,那么操作系统将不会考虑它。

2.res/mipmap

需要更多地了解mipmap文件夹中的图像,请参阅下面的图像,mipmap文件夹中有一个图像文件。

在使用Android应用程序时偶尔遇到的一个问题是,比如看到的图像比较模糊,像素化或笨拙地拉伸。 解决此问题的方法是为Android支持的每种密度创建一个可绘制的文件夹,并将正确缩放的图像放在每个文件夹中。 Android支持6种不同的密度范围(以每英寸点数衡量):

ldpi:低密度屏幕; 大约120dpi。

mdpi:中等密度(在传统的HVGA)屏幕上; 大约160dpi。

hdpi:高密度屏幕; 大约240dpi。

xhdpi:超高密度屏幕; 大约320dpi。 在API级别8中添加

nodpi:这可以用于位图资源,不想缩放到匹配设备密度。

tvdpi:屏幕介于mdpi和hdpi之间; 大约213dpi。这不被视为“主要”密度组。 它主要用于电视机,大多数应用程序不需要它 - 为大多数应用程序提供mdpi和hdpi资源已足够,系统将根据需要进行扩展。此限定符是在API级别13中引入的。

具体引入方法在资源组织及访问中会说到。



二、Android Activity 生命周期

首先,了解Activity是什么?

Activity是支持屏幕或UI的Java代码。换句话说,用户界面的构建块就是Activity。Activity类是Android中的一个预定义类,每个拥有UI的应用程序都必须继承它来创建窗口。

例如,MainActivity类是一个Activity,它从库中的Activity类扩展而来。 下图说明了一个Activity的生命周期。

Activity的一个生命周期描述了一个Activity开始启动后的进程,直到应用程序关闭。 包括Activity暂时停止的进程,恢复等等。


Android 第二天 studio项目结构_第3张图片
Activity生命周期

根据Activity的生命周期,在需要的地方实现对应的方法。这一块和iOSviewController中的生命周期类似。


三、studio工具使用:

(以下只是今天学习到的,后续持续补充)

1.查看logCat,view- tools window-Logcat

2.@Override是伪代码,表示重写.编译器可以给你验证@Override下面的方法名是否是你父类中所有的,如果没有则报错 

3.Studio中添加好用的插件,

路径:Android Studio-Preferences-Plugins-Browse repositories-选择需要的插件点击install

前提Mac pro中的studio。

3.在android中经常看到设置的颜色为八位的十六进制的颜色值,例如:

public static final class color {

    public static final int lightblue=0x7f040000;

}

或者在Java中tx.setTextColor(0xffff00f);

说明:

0xffff00ff是int类型的数据,分组一下0x|ff|ff00ff,0x表示颜色整数的标记,ff表示透明度,f00f表示色值,注意:0x后面ffff00ff必须是8位的颜色表示。

颜色和不透明度 (alpha) 值以十六进制表示法表示。任何一种颜色的值范围都是 0到 255(00到 ff)。

对于 alpha,00表示完全透明,ff表示完全不透明。

表达式顺序是“aabbggrr”,其中“aa=alpha”(00到ff);“bb=blue”(00到ff);“gg=green”(00到ff);“rr=red”(00到ff)。

3.2、Android中设置文本颜色的四种方法:

3.2.2、利用系统自带的颜色类

tx.setTextColor(android.graphics.Color.RED);

3.2.3、数字颜色表示

tx.setTextColor(0xffff00f);

3.2.4、自定义颜色

在工程目录values文件夹下新建一个color.xml,内容如下:

Android 第二天 studio项目结构_第4张图片
色值定义xml

color.xml中也可用color标签#ffff0000    

java中设置相应改为:

tx.setTextColor(tx.getResources().getColor(R.color.red));

3.2.5、直接在xml的TextView中设置

android:textColor="#F8F8FF00" 或

android:textColor="#F8FF00”


四、button点击打开另一个activity

两种方法:

方法一:

1.在A页面的xml文件(layout布局文件)中初始化button,设置button的idandroid:id="@+id/clickBtn"

2.在A页面的java文件中,关联xml中的button

   第一步:

声明btn: private Button btn1;

  第二步:在onCreate方法中将button关联

 // 将xml中button和java中的button进行关联

btn1 = (Button)findViewById(R.id.clickBtn);

 第三步:给btn1绑定点击事件

btn1.setOnClickListener(new View.OnClickListener() {

 @Override

 public void onClick(View view) {

Log.i(TAG, "clickToast:click button");

    }

});

第四步:初始化B页面的java文件,superclass设置为:android.app.Activity

 在B的java文件中导入import android.os.Bundle; 重写onCreate方法:其中R.layout.my的my是B页面的xml文件名称

 @Override

 protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

 super.onCreate(savedInstanceState);

            setContentView(R.layout.my);}

第五步:在AndroidManifest.xml中

// 加入新的页面 

第六步实现点击方法:

btn1.setOnClickListener(new View.OnClickListener() {

 @Override

 public void onClick(View view) {

Log.i(TAG, "clickToast:click button");

Intent intent = new Intent();

intent.setClass(MainActivity.this,Test.class);

        startActivity(intent);

    }

});

方法二:直接A页面的xml文件中设置点击方法:

android:onClick=“startService"

在java中实现startService方法

protected void startService(View view){

    startService(new Intent(getBaseContext(),MyService.class));

}

下面这种方法更方便点,不用重新声明绑定。


五、组件定义及相关组件介绍

在Android应用程序中可以使用以下四个主要组件:

Android 第二天 studio项目结构_第5张图片
组件1

在构建上述实体时,还会使用其他组件,它们的逻辑和它们之间的连线。 这些组件是

Android 第二天 studio项目结构_第6张图片
组件2

后续补充相关用法。


六、资源组织及访问

在许多Android项目中,有很多东西要用来建立一个良好的Android应用程序。除了编码应用各种资源,如:位图,颜色,布局定义,用户界面字符串,动画,静态内容。在res/目录下,浙西资源一直保存在各自子目录中。

简单目录结构

MyProject/

   src/

      MyActivity.java

   res/

      drawable/

      layout/

         Activity_main.xml

      values/

          Strings.xml

res/目录中包含不同的子目录的不同资源。在这里有一个图像资源,两个布局资源和一个字符串资源文件。下表给出了详细的项目在 res/目录里面支持的资源。

Android 第二天 studio项目结构_第7张图片
res目录说明1
Android 第二天 studio项目结构_第8张图片
res目录说明2

替代资源

应用程序提供替代资源以支持特定的设备配置。例如,包括替代绘制资源(ie.images),针对不同的语言不同的屏幕分辨率并替代字符串资源。在运行时Android 检测当前设备的配置,并为应用程序加载适当的资源。

要指定一组资源的配置具体的替代,请遵循以下步骤:

创建新目录在res/ 目录下,命名形式如 -。这里resources_name 是在上表中提到的资源,如layout,drawable 等限定符将指定一个单独的配置,要使用这些资源。可以查看官方文档的完整列表,限定符为不同类型的资源。

在这个新的目录中保存相应的替代资源。资源文件必须被命名为默认的资源文件,如下面的例子所示的完全一样,但这些文件具有特定内容的替代。例如,虽然图像的文件名是相同的,但对高分辨率屏幕,其分辨率会很高。

下面是一个例子,它指定一个默认的屏幕和高分辨率屏幕的替代图像的图像。

MyProject/

    src/ 

        MyActivity.java 

 res/

        drawable/ 

            icon.png

            background.png

 drawable-hdpi/ 

            icon.png

            background.png 

        layout/ 

            activity_main.xml

            info.xml

        values/ 

            strings.xml

访问资源

在应用程序开发中,需要访问定义的资源,无论是在代码还是在布局XML文件。下面的部分介绍了如何访问资源在这两个场景:

访问资源代码

当Android应用程序被编译时,会产生一个R类,其中包含在res/ 目录中的所有可用资源的资源ID。使用R类直接访问该子目录和资源名称或资源ID。 

示例:

要访问 res/drawable/myimage.png,并设置一个ImageView 可使用下面的代码:

ImageViewimageView =(ImageView)findViewById(R.id.myimageview);

imageView.setImageResource(R.drawable.myimage);


七、Service 生命周期

Service(服务)是一种在后台运行,执行长时间运行的操作,无需与用户交互的组件。例如,一个服务可以在后台播放音乐,用户在不同的应用程序或者可能通过网络获取数据,而不阻塞用户交互活动。本质上,一个服务可以采取两种状态:

Started:当一个应用程序组件,如活动,开始通过调用StartService()启动一个服务。开始以后服务可以无限期地在后台运行,即使启动它的组件被破坏。 

Bound:当一个应用程序组件绑定调用bindService()方法绑定服务。绑定服务提供客户端 - 服务器的接口,允许组件进行交互的服务,发送请求,得到结果,这样可以跨进程进程间通信(IPC)。

Android 第二天 studio项目结构_第9张图片
Service生命周期
Android 第二天 studio项目结构_第10张图片
Service回调说明

今天学习的理论知识比较多,好好记忆,多多练习,还得写项目才能更深刻的体会这些理论。加油

你可能感兴趣的:(Android 第二天 studio项目结构)