分类: 系统运维
2015-11-03 08:46:08
原文地址:android基础知识 作者:hello_fish
public class MyActivity extends Activity , Activity是Context(上下文)类的子类
Activity是一个基本的组成单元,通过若干activity程序可以完成一个个界面显示及事件处理
public class MyActivity extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); //生命周期方法
setContentView(R.layout.main);//设置要使用的布局管理器
}
}
src:存放Activity程序,或者是以后的其他组件
gen:此文件夹中的内容是自动生成的,用户不可以修改,用于保存所有的ID。
R.java保存着所有资源程序,此文件自动编写
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int ic_launcher=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}
即:程序都是通过映射名找到相关自愿,key=value形式
assests:存放一些大型的资源文件,图片、音乐、文字等,但一般不使用
res:存放资源文件,例如图片、音乐、文字等等
drawable-hdpi:存放图片文件夹,存放高清图片
drawable-ldpi:存放图片文件夹,存放低分辨率图片
drawable-mdpi:存放图片文件夹,存放中等高清图片 。其中3个图片是相同的,只是分辨率不同。
layout:存放所有布局管理器的配置信息,类似java 中的*.properties文件。
values
strings.xml
其中
HelloAndroid 是在手机的应用程序栏中显示的提示信息,以后所有编写的所有项目,都应该在strings.xml中编写相应的提示信息。strings.xml中编写的提示信息,都会自动在R.java中进行注册
values文件夹除了strings.xml以外,还可能存在其他信息,如arrays.xml color.xml styles.xml,这些名称都是约定俗称的
以上文件夹都是在建立项目时自动在res中生成的,除了这些以外,在res中还可以增加下面子文件夹:
res\raw:存放一些原声文件,例如视频 音乐
res\xml:存放一些xml文件配置信息
res/anim:用于进行动画效果配置的文件夹
Androidmanifest.xml:是android最重要的组成部分
androidmanifest.xml
xmlns:android=" 对应着使用的schema
package="com.test" 程序所在包名称
android:versionCode="1" 应用程序的版本号
android:versionName="1.0" > 显示给用户的名称
android:icon="@drawable/ic_launcher" 使用的图标,在R.java中对应
android:label="@string/app_name" >
android:label="@string/app_name" >表示的是应用程序的提示信息,使用的是strings.xml,在R.java中对应
main.xml
xmlns:android=
android:orientation=”vertical” 组件的排列方式,此为垂直排列
android:layout_width="fill_parent"此布局管理器的屏幕宽度,此为当前手机宽度
android:layout_height="fill_parent"
android:orientation="vertical" >
android:layout_width="fill_parent" 此组件的宽度为屏幕的宽度
android:layout_height="wrap_content"组件的高度为文字的高度
android:text="@string/hello" /> 组件默认显示的文字,此时为strings.xml
第一个Android项目
main.xml
android:orientation="vertical" >
android:layout_height="wrap_content"
android:text="@string/hello" />
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
现在配置了2个新的组件,这2个组件都存在ID,而在以后的Activity程序之中会直接使用此组件进行操作,而且会自动在R.java中自动生成一个引用的ID
R.java部分
public static final class id {
public static final int mybut=0x7f050001;
public static final int mytext=0x7f050000;
}
可以使用findViewbyId()方法根据R.java中定义的ID数字取得相应组件 public View findViewById(int id)
MyActivity.java
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView)super.findViewById(R.id.mytext) ;//取得TextView组件
text.setText("fish"); //设置显示文字
Button but = (Button)super.findViewById(R.id.mybut) ;//取得按钮组件
but.setText("按我吧") ;
}
}
修改:
strings.xml
R.java部分
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
public static final int info=0x7f040002;
public static final int msg=0x7f040003;
MyActivity.java
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView text = (TextView)super.findViewById(R.id.mytext) ;//取得TextView组件
text.setText(R.string.info); //设置显示文字
Button but = (Button)super.findViewById(R.id.mybut) ;//取得按钮组件
but.setText(R.string.msg) ;
}
}
或者
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.TextView;
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// TextView text = (TextView)super.findViewById(R.id.mytext) ;//取得TextView组件
// text.setText(R.string.info); //设置显示文字
// Button but = (Button)super.findViewById(R.id.mybut) ;//取得按钮组件
// but.setText(R.string.msg) ;
}
}
main.xml
android:orientation="vertical" >
android:layout_height="wrap_content"
android:text="@string/hello" />
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/info"
/>
通过程序动态生成:
从上面的程序可发现,整个项目之中,所有的组件都可以通过一个类来表示,所以这个时候就可以直接雷永类的方式定义组件
main.xml
android:orientation="vertical" >
MyActivity.java
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
TextView text = new TextView(this) ;//要根据上下文(Context)创建组件
text.setText(super.getString(R.string.info)) ;//通过strings.xml设置文字
setContentView(text);
}
}
如果想设置方向就使用Linearlayout类中的方法
package com.test;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.TextView;
public class MyActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
LinearLayout layout = new LinearLayout(this);//定义布局管理器
layout.setOrientation(LinearLayout.VERTICAL) ;//所有组件垂直摆放
TextView text = new TextView(this) ;//要根据上下文(Context)创建组件
text.setText(super.getString(R.string.info)) ;//通过strings.xml设置文字
Button but = new Button(this);
but.setText(super.getString(R.string.msg)) ;
layout.addView(text) ;//向布局管理器中增加文本组件
layout.addView(but) ;
super.setContentView(layout) ;//设置使用的布局管理器
}
}