工程项目解析
- 使用Android studio开发时,新建的项目一般有以下结构
java:我们写Java代码的地方,业务功能都在这里实现
res:存放我们各种资源文件的地方,有图片,字符串,动画,音频等,还有各种形式的XML文件
一. res资源文件夹介绍:
- 图片资源:
- drawable:存放各种位图文件,(.png,.jpg,.9png,.gif等)除此之外可能是一些其他的drawable类型的XML文件。
- drawable-v24:存放Android 7.0版本以上的图片资源,如果Android 7.0版本以下的图片资源存放在该文件中则会出现资源无法匹配问题。
- mipmap-anydpi-v26:Android 8.0 应用图标适配文件。
- mipmap-hdpi:高分辨率,一般我们把图片丢这里。
- mipmap-mdpi:中等分辨率。
- mipmap-xhdpi:超高分辨率。
- mipmap-xxhdpi:超超高分辨率。
- mipmap-xxxhdpi:更高的分辨率。
- 布局资源:
- layout:该目录下存放的就是我们的布局文件,另外在一些特定的机型上,我们做屏幕适配,比如480*320这样的手机,我们会另外创建一套布局,就行:layout-480x320这样的文件夹!
- values目录:
- colors.xml:定义颜色资源
- string.xml:定义字符串资源
- styles.xml:定义样式资源
二. 资源使用方法:
-
所有的资源文件都会在R.java文件下生成一个资源id,我们可以通过这个资源id来完成资源的访问,使用情况有两种:Java代码中使用和XML代码中使用。
Java代码中使用:
Java 文字:txtName.setText(getResources().getText(R.string.name));
图片:
imgIcon.setBackgroundDrawableResource(R.drawable.icon);
颜色:
txtName.setTextColor(getResouces().getColor(R.color.red));
布局:
setContentView(R.layout.main);
控件:
txtName = (TextView)findViewById(R.id.txt_name);
XML代码中使用:
通过@xxx即可得到,比如这里获取文本和图片:<TextView android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" android:background = "@drawable/img_back"/>
两个重要的文件
-
功能文件:MainActivity.java;
-
布局文件:activity_main和Android;
1. MainActivity.java
代码如下:package com.example.zy_pc.myapplication; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } }
2. activity_main.xml
代码如下:<?xml version="1.0" encoding="utf-8"?> //定义了使用xml的版本与编码的方式 <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" //定义我们需要使用的框架,来自于... xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" //有了它,我们可以使用alt+/作为提示,提示你该输入什么 android:layout_width="match_parent" android:layout_height="match_parent" //这两句话是控制组件的高度与宽度,有三个属性可以选择: //warp_content;fill_parent;match_parent第一个是组件刚好显示组件的内容大小, //而后面两个作用一样,填充容器水平方向上的空间,就是拉伸 tools:context=".MainActivity"> //这一句不会被打包进APK。只是ADT的Layout Editor在你当前的Layout文件里面设置 //对应的渲染上下文,说明你当前的Layout所在的渲染上下文是activity name对应的 //那个activity,如果这个activity在manifest文件中设置了Theme, //那么ADT的Layout Editor会根据这个Theme来渲染你当前的Layout。 //就是说如果你设置的MainActivity设置了一个Theme.Light(其他的也可以), //那么你在可视化布局管理器里面看到的背景阿控件阿什么的就应该是Theme.Light的样子。 //仅用于给你看所见即所得的效果而已。 <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" //是布局文件的一个属性,它的值表示线性分割原本应有长度的权重, //要和wrap_content和match_parent配合使用 android:text="Hello World!"/> //文本组件:将要显示的文字 </android.support.constraint.ConstraintLayout>