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项目架构
目录说明

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暂时停止的进程,恢复等等。


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,内容如下:

色值定义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中

// 加入新的页面 

<activity android:name=".Test"></activity>

第六步实现点击方法:

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应用程序中可以使用以下四个主要组件:

组件1

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

组件2

后续补充相关用法。


六、资源组织及访问

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

简单目录结构

MyProject/

   src/

      MyActivity.java

   res/

      drawable/

      layout/

         Activity_main.xml

      values/

          Strings.xml

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

res目录说明1
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)。

Service生命周期
Service回调说明

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 215,294评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,780评论 3 391
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 161,001评论 0 351
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,593评论 1 289
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,687评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,679评论 1 294
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,667评论 3 415
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,426评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,872评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,180评论 2 331
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,346评论 1 345
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,019评论 5 340
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,658评论 3 323
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,268评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,495评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,275评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,207评论 2 352

推荐阅读更多精彩内容