今天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项目结构
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的生命周期,在需要的地方实现对应的方法。这一块和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,内容如下:
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项目中,有很多东西要用来建立一个良好的Android应用程序。除了编码应用各种资源,如:位图,颜色,布局定义,用户界面字符串,动画,静态内容。在res/目录下,浙西资源一直保存在各自子目录中。
简单目录结构
MyProject/
src/
MyActivity.java
res/
drawable/
layout/
Activity_main.xml
values/
Strings.xml
res/目录中包含不同的子目录的不同资源。在这里有一个图像资源,两个布局资源和一个字符串资源文件。下表给出了详细的项目在 res/目录里面支持的资源。
替代资源
应用程序提供替代资源以支持特定的设备配置。例如,包括替代绘制资源(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)。
今天学习的理论知识比较多,好好记忆,多多练习,还得写项目才能更深刻的体会这些理论。加油