android常用控件总结

更新时间:2023-06-10 03:05:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

android 常用控件总结

Android 常用控件总结

(内容包括了Android中的大部分常用控件及其事件的监听)

第一章

1.1 Android中src文件夹包含项目的所有包及其资源文件,res文件夹包含了项目中所有的资源。比如:程序图标(drawable),布局文件(layout),常量(value),音频文件(raw) R.java是在创建项目是自动生成的只读文件,不可更改此文件。R文件其作用:是定义项目中所有资源的索引文件。

1.2 AndroidManfest.xml 如下:

<?xml version="1.0" encoding="utf-8"?>

<manifest //根节点,描述了packege包中所有的内容

xmlns:android="/apk/res/android" //包命名空间的声明,使得Android中各种标准属性能在文件中使用,提供了大部分元素中的数据

package="Android.Summary" //引用程序包名

android:versionCode="1"

android:versionName="1.0">

<uses-sdk android:minSdkVersion="7" /> //使用SDK版本号

<application //包含package中application级别组件声明的根节点,可包含application的一些全局和默认的属性,如标签label,icon,主题,必要的全限。注意:一个manifest中只能包含一个或0个application

android:icon="@drawable/icon" //应用程序图标

android:label="@string/app_name"> //应用程序名字

<activity android:name=".SummaryActivity" //Activity用来与用户交互的主要工具,是用户打开程序的初始界面.此处为引用程序默认启动的Activity

android:label="@string/app_name">

android 常用控件总结

<intent-filter>/ //描述了Activity的启动时间和位置,另外为了支持查找Activity可以包含一个或多个<intent-filter>

<action android:name="android.intent.action.MAIN" /> //acton 为组件支持的Intent action

<category android:name="UNCHER"

/>//categor 为组件支持的Intent category 这里指定了引用程序的默认启动的Activity </intent-filter>

</activity>

<activity android:name = "Activity02"></activity> //在此对新增的Activity进行注册。如果在不同的包中注意声明是将包名带上

</application>

</manifest>

1.3 String.xml如下:

<?xml version="1.0" encoding="utf-8"?>

<resources> //此处定义了两个字符串资源,即定义了app_name,hello常量

<string name="hello">Hello World, SummaryActivity!</string>

<string name="app_name">Summary</string>

</resources>

如何使用这个资源呢?如下:

Resources r = this.getContext().getResources(); //通过Context的

getResource()实例化一个Resources对象

String app_name = ((String)r.getString(R.string.app_name)); //然后通过

getString()方法取得指定的索引的字符串。项目中所有常量都可以在String.xml文件中定义

String hello = ((String)r.getString(R.string.hello));

1.4 main.xml如下:

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="/apk/res/android"//LinearLayout 线程版面配置

android 常用控件总结

android:orientation="vertical" //版面配置的方式。此为自上到下为垂直配置,"horizontal"为水平配置

android:layout_width="fill_parent" //定义当前视图在屏幕上所占的宽度,"fill_parent"为填充整个屏幕宽度

/*android:layout_weight="50"*/ //用于给一个布局中多个视图的重要度赋值

android:layout_height="fill_parent" //定义当前视图在屏幕上所占的高度,...........................高度

>

<TextView

android:layout_width="fill_parent"

android:layout_height="wrap_content" //随着视图的栏位的不同而改变这个视图的高度或宽度

android:text="@string/hello" //在视图上显示的内容,此处引用了@String中的hello字符串

/>

</LinearLayout>

1.5 src下的java 如下:

package Android.Summary;

import android.app.Activity;

import android.os.Bundle;

public class SummaryActivity extends Activity { //继承自Activity /** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState){ //重写onCreate()方法 super.onCreate(savedInstanceState);

setContentView(yout.main); //设置要显示的布局

}

}

android 常用控件总结

第二章

2.1 Android应用程序由四个模块组成:Activity,Service,Intent,ContentProvider(注意:一个应用程序不一定包含全部的四个模块).

在使用时必须在AandroidManfest中进行声明。

Activity可以理解为用户看到屏幕,主要用于处理应用程序的整体性工作。如: a.监听系统事件,触屏事件,为用户显示指定的View,启动其他Activity等。 b.所有应用的Activity都继承于android.app.Activity,该类是Android提供的基层类。

c.一个Activity通常就是一个单独的屏幕。

d.每一个活动都被实现为一个独立的类。

e.大多数的应用程序都是由多个Activity组成。

Intent Aandroid中主要用Intent类实现从一个Activity跳转到另一个Activity。在Intent的描述结构中,有两个重要的部分:动作和对应的数据。

典型的动作有MAIN,VIEW,PICK,EDIT.而动作对应的数据则以URI的形式表示。例如:要查一个人的联系方式,需要创建一个动作类型View的Intent

,以及一个表示这个人的URI.

Intent的使用:

button1.setOnClickListener(new Button.OnClickListener(){

public void onClick(View v){

Intent intent = new Intent(); //创建一个Intent对象

intent.setClass(Activity01.this,Activity02.class);//指明要启动的另一Activity02

startActivity(intent); //启动一个新的Activity

Activity01.this.finish(); //关闭当前Activity01

}

});

这里需要注意在Android中对新启动的Activity进行声明。声明方式:

<activity android:name = "Activity02"></activity> //注意:如果在不同的包中在声明是还要加上包名

IntentReceiver

android 常用控件总结

如果希望Android应用能够对外部事件(如电话打入时,数据网络可用时,)做出响应,可用使用IntentReceiver.虽然IntentReceiver在如上事件发生

时会使用NotificationManager通知用户,但它并不能生产UI。IntentReceiver可以在AndroidManifest.xml中注册,也可在代码中使用Context.registerReceiver

进行注册。当IntentReceiver被触发时,系统会在需要的时候启动应用。各种应用还可以通过ContentReceiver()将他们自己的IntentReceiver广播出去。 ???????

Content Provider

作用:主要用于不同应用程序中的数据的传递。

Content Provider 是一个特殊的存储数据的类型。

Android自身提供现成的Content

Provider:Contacts ,Browser,CallLog,Settings,MediaStore

应用可用通过唯一的ContentResolver界面来使用具体的Conten Provider,然后可以用ContentResolver提供的方法来使用你需要的Content Provider

其中,ContentResolver提供的方法有query(),insert(),update()等。

URI----String形式的Content Provider的完整路径。

下面这个这个例子通过ContentProvider获取电话本中的数据,然后显示到TextView中去。

public class Activity01 extends Activity{

public void onCreate(Bundle savedInstanceState){

TextView textView = new TextView(this);//得到TextView对象

String string = "";

super.onCreate(savedInstanceState);

ContentResolver resolver = getContentResolver();//得到ContentResolver对象

Cursor cursor =

resolver.query(ContactsContract.Contacts.CONTENT_URI,null,null,null,null);//取得电话本中开始一项的光标,通过query方法查询出符合标准的电话本记录

//向下移动光标

while(cursor.moveToNext()){

//取得联系人名字

android 常用控件总结

int name_index = cursor.getColumnIndex(PhoneLookup.DISPLAY_NAME); String name = cursor.getString(name_index);

//取得电话号码

int number_index = cursor.getColumnIndex(PhoneLookup.NUMBER);

String number = cursor.getString(number_index);

string +=(name+":"+number+"\n");

}

cursor.close();

textView.setText(string);//设置TextView显示的内容

setContentView(textView);//显示到屏幕上 其实TextView也是View的一种 }

}

注意:在使用这些模块中用到了读取联系人的API,所以必须在AndroidManifest.xml中声明

声明方式为:

<uses_permission

android:name="android.permission.READ_CONTACTS">

</uses-permission>

Service 后台服务,没有界面

启动service方法:

a.Context.startService()

b.Context.bindService()//与上一种方法不同处 如果这个Service没有处于启动状态,则将其启动

下面这个例子以Activity中的俩个控件来控制播放一首Mp3. (例中:需要在res文件夹中创建一个raw文件夹 然后放入一首MP3)

public class Activity01 extends Activity{

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(yout.main);

android 常用控件总结

//从main.xml布局中获得Button对象

Button button_start = (Button)findViewById(R.id.start);

Button button_stop = (Button)findViewById(R.id.stop);

//设置按钮(Button)监听

button_start.setOnClickListener(start);

button_stop.setOnClickListener(stop);

}

//开始按钮

private OnClickListener start = new OnClickListener(){

public void onClick(View v){

//开启Service

startService(new Intent("com.yarin.Android.MUSIC"));

}

};

//停止按钮

private OnClickListener stop = new OnClickListener(){

public void onClick(View v){

//停止Service

stopService(new Intent("com.yarin.Android.MUSIC"));

}

};

}

public class MusicService extends Service{

//MediaPlayer对象

private MediaPlayer player;

public IBinder onBind(Intent arg0){

return null;

}

public void onStart(Intent intent, int startId){

super.onStart(intent, startId);

android 常用控件总结

//这里可以理解为装载音乐文件

player = MediaPlayer.create(this, R.raw.test);

//开始播放

player.start();

}

public void onDestroy(){

super.onDestroy();

//停止音乐-停止Service

player.stop();

}

}

AndroidManifest.xml文件中

<service android:name=".MusicService">

<intent-filter>

<action android:name="com.yarin.Android.MUSIC" />

<category android:name="android.intent.category.default" />

</intent-filter>

</service>

2.2 Aandrod的生命周期

public class Activity02 extends Activity{

private static final String TAG = "Activity02";

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(yout.main2);

Log.v(TAG, "onCreate");

}

public void onStart(){

super.onStart();

Log.v(TAG, "onStart");

android 常用控件总结

}

public void onResume(){

super.onResume();

Log.v(TAG, "onResume");

}

public void onPause(){

super.onPause();

Log.v(TAG, "onPause");

}

public void onStop(){

super.onStop();

Log.v(TAG, "onStop");

}

public void onDestroy(){

super.onDestroy();

Log.v(TAG, "onDestroy");

}

public void onRestart(){

super.onRestart();

Log.v(TAG, "onReStart");

}

}

这些方法都是系统自动调用的。

第三章

3.1 事件处理

* 控件事件通过设置其控件的监听器来监听并处理事件

* 按键按下事件:通过重写onKeyDown方法

* 按键弹起事件:通过重写onKeyUp方法

* 触笔点击事件:通过实现onTouchEvent方法

* 示例中使用了Toast控件:

* Toast.makeText(this, string, Toast.LENGTH_SHORT).show();

android 常用控件总结

public class Activity01 extends Activity{

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(yout.main);

//获得Button对象

Button button_ok = (Button) findViewById(R.id.ok);

button_ok.setOnClickListener(new Button.OnClickListener()

{-------------------------------------------------------//设置Button控件监听器 public void onClick(View v){

//这里处理事件

DisplayToast("点击了OK按钮");

}

});

}

/* 按键按下所触发的事件*/

public boolean onKeyDown(int keyCode, KeyEvent event){

switch (keyCode){

case KeyEvent.KEYCODE_DPAD_CENTER:

DisplayToast("按下:中键");

break;

case KeyEvent.KEYCODE_DPAD_UP:

DisplayToast("按下:上方向键");

break;

case KeyEvent.KEYCODE_DPAD_DOWN:

DisplayToast("按下:下方向键");

break;

case KeyEvent.KEYCODE_DPAD_LEFT:

DisplayToast("按下:左方向键");

break;

case KeyEvent.KEYCODE_DPAD_RIGHT:

android 常用控件总结

DisplayToast("按下:右方向键");

break;

}

return super.onKeyDown(keyCode, event);

}

/* 按键弹起所触发的事件*/

public boolean onKeyUp(int keyCode, KeyEvent event){

switch (keyCode){

case KeyEvent.KEYCODE_DPAD_CENTER:

DisplayToast("弹起:中键");

break;

case KeyEvent.KEYCODE_DPAD_UP:

DisplayToast("弹起:上方向键");

break;

case KeyEvent.KEYCODE_DPAD_DOWN:

DisplayToast("弹起:下方向键");

break;

case KeyEvent.KEYCODE_DPAD_LEFT:

DisplayToast("弹起:左方向键");

break;

case KeyEvent.KEYCODE_DPAD_RIGHT:

DisplayToast("弹起:右方向键");

break;

}

return super.onKeyUp(keyCode, event);

}

//用于响应按键重复点击,官方API指出onKeyMultiple方法总是返回false,即它没有handle,因此必须重写才能实现-------------------此方法没用过具体情况怎么样不是很清楚?

public boolean onKeyMultiple(int keyCode, int repeatCount, KeyEvent event){

return super.onKeyMultiple(keyCode, repeatCount, event);

}

android 常用控件总结

/* 触笔事件*/

public boolean onTouchEvent(MotionEvent event){

int iAction = event.getAction(); //利用getAction得到所执行的动作 if (iAction == MotionEvent.ACTION_CANCEL ||

iAction == MotionEvent.ACTION_DOWN ||

iAction == MotionEvent.ACTION_MOVE){

return false;

}

//得到触笔点击的位置

int x = (int) event.getX();

int y = (int) event.getY();

//将获得的坐标转成String类型的方法

DisplayToast("触笔点击坐标:

("+Integer.toString(x)+","+Integer.toString(y)+")");

return super.onTouchEvent(event);

}

/* 显示Toast */

public void DisplayToast(String str){

Toast.makeText(this, str, Toast.LENGTH_SHORT).show();

}

}

我们分析了一些常用事件处理方式。每一个键都对应一个键值。当然也可根据需要来改变一些键的功能,需要我们自己构建KeyEvent对象------------------有待进一步学习 构造KeyEvent对象的几种方法:

KeyEvent(int action,int code);

KeyEvent(long DownTime,long EventTime,int action,int code,int repeat); KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState);

KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode);

android 常用控件总结

KeyEvent(long DownTime,long EventTime,int action,int code,int repeat,int metState,int device,int scancode,int flags);

KeyEvent(KeyEvent origEvent,long EventTime,int newRepart);

例:

public class Activity01 extends Activity{

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(yout.main);

}

public boolean onKeyDown(int keyCode, KeyEvent event){

//这里构建KeyEvent对象,其功能为返回键的功能

//因此我们按任意键都会执行返回键功能

KeyEvent key = new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_BACK);

//这里传入的参数就是我们自己构建的KeyEvent对象key

return super.onKeyDown(key.getKeyCode(), key);

}

}

3.2 常用控件

Button

xml设计

<Button

android:id="@+id/button"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

></Button>

代码设计Button button = new Button(this);

button.setText("我是Button");

button.setWidth(123); //设置宽度

button.setHeight(123); //设置高度

button.setTextColor(Color.BLUE); //设置文字颜色

button.setTextSize(123); //设置字体大小

android 常用控件总结

button.setBackgroundColor(Color.BLUE); //设置控件背景色

监听器

button.setOnClickListener(new Button.OnClickListener(){//设置按钮的事件监听

public void onClick(View v){

//处理按钮事件产生一个Toast.利用button.getText()得到按钮显示的内容 Toast toast = Toast.makeText(Activity01.this, "你点击了

“"+button.getText()+"”按钮!", Toast.LENGTH_LONG);

//设置toast显示的位置

toast.setGravity(Gravity.TOP, 0, 150);

//显示该Toast

toast.show();

}

});

-----------------------------------------------------------------------------------------------------------------------------

TextView 一个用来显示文本的控件

xml设计<TextView

android:id= "@+id/textView" //设置id

android:layout_width ="fill_parent" //宽度充满全屏

android:layout_height="wrap_content" //高度随控件变化

android:layout_height="2dip"

android:textColor=""

android:background="#aaa00" //背景颜色

android:text="你好"/>

android:paddingLeft="50px"

android:paddingTop="5px"

android:paddingBottom="5px"

android:textSize="30sp"

android:singleLine="true"

android:layout_below="@id/imageView_handler"//在什么下

android:gravity ="left" //用于设置View中内容相对于View组件的对齐方式,

android 常用控件总结

android:layout_gravity//用于设置View组件相对于Container的对齐方式。 android:paddingLeft="30px" // 按钮上设置的内容离按钮左边边界30个像素 android:layout_marginLeft="30px" //整个按钮离左边设置的内容30个像素 android:layout_weight="1"//控件权重 即占的比例 默认值为0

android:gravity="center_horizontal"//水平居中

android:padding="3dip"

代码设计TextView textView = new TextView(this); //声明对象

textView.setTextColor(Color.RED); //设置字体颜色

textView.setTextSize(20); //设置字体大小

textView.setBackgroundColor(Color.BLUE);//控件背景色

textView.setText("你好") //显示的文字

textView.setHeight

textView.setWidth

textView.setVisibility(GONE/VISIBLE); //设置为不可见/可见

textView.setGravity(Gravity.CENTER);//设置文字权重

监听器TextView textView = new TextView(this); //得到对象

textview.setOnClickListener(new

TextView.OnClickListener(){-------------------------------------------TextView监听器

public void onClick(View v){

}

});

-------------------------------------------------------------------------------------------------------------------------------

ImageButton 带图标的按钮

xml设计

<ImageButton

android:id= "@+id/imageButton1"

android 常用控件总结

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:src="@drawable/qq" //在xml设计所使用的图片

/>

代码中设计

imageButton.setImageDrawable(getResources().getDrawable(R.drawable.image2));//在代码中设计使用的图片(得到对象后)

监听器

imageButton.setOnClickListener(new Button.OnClickListener()

{---------------------------------------------ImageButton监听器

@Override

public void onClick(View v) {

//创建对话框

Dialog dialog = new AlertDialog.Builder(ImageButton_Dialog.this) .setTitle("ImageButton2")

.setMessage("跳转到系统图片")

.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override

public void onClick(DialogInterface dialog, int which) {

// TODO Auto-generated method stub

imageButton2.setImageDrawable(getResources().getDrawable(android.R.drawable.sym_action_call));

}

}).create();

dialog.show();

}

});

-------------------------------------------------------------------------------------------------------------------------------

EditText

android 常用控件总结

xml设计

<EditText

android:id="@+id/editText"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:textSize="18sp"

android:layout_x="29px"

android:layout_y="33px"

android:hint="请输入账号" //设置当m_EditText中为空时提示的内容

/>

代码设计EditText editText = new EditText(this);//得到EditText对象 editText.setTextSize(20); //设置字体大小

editText.setHint("请输入账号"); //设置当m_EditText中为空时提示的内容 监听器

editText.setOnKeyListener(new

EditText.OnKeyListener(){-----------------------------------------EditText监听器

@Override

public boolean onKey(View arg0, int arg1, KeyEvent arg2){

// 得到文字,将其显示到TextView中

m_TextView.setText("文本框中内容是:" + m_EditText.getText().toString()); return false;

}

});

-----------------------------------------------------------------------------------------------------------------

CheckBox 多项选择 需要对没有按钮设置监听器

xml设计

<CheckBox

android:id="@+id/checkBox"

android:layout_width="fill_parent"

android 常用控件总结

android:text="@string/CheckBox4"

>

监听器

checkBox1.setOnCheckedChangeListener(new CheckBox.OnCheckedChangeListener() {//对每个选项设置事件监听-------------------CheckBox监听器

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked){ if(m_CheckBox1.isChecked()){

DisplayToast("你选择了:"+m_CheckBox1.getText());

}

}

});

-------------------------------------------------------------------------------------------------------------------

Spinner 下拉列表

下面一个例子将可选内容通过ArrayAdapter和下拉列表连接起来。设置监听器 通过setVisibility方法设置当前显示项

main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="/apk/res/android" android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:id="@+id/TextView1"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

<Spinner

android:id="@+id/Spinner1"

android 常用控件总结

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

/>

</LinearLayout>

public class Activity01 extends Activity{

private static final String[] string = { "O型", "A型", "B型", "AB型", "其他" };

private TextView m_TextView;

private Spinner m_Spinner;

private ArrayAdapter<String> adapter;

@Override

public void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(yout.main);

m_TextView = (TextView) findViewById(R.id.TextView1);

m_Spinner = (Spinner) findViewById(R.id.Spinner1);

//将可选内容与ArrayAdapter连接

adapter = new ArrayAdapter<String>(this,

yout.simple_spinner_item, string);

//设置下拉列表的风格

adapter.setDropDownViewResource(yout.simple_spinner_dropdown_item);

//将adapter添加到m_Spinner中

m_Spinner.setAdapter(adapter);

android 常用控件总结

//添加Spinner事件监听

m_Spinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener() {--------------------------Spinner监听器

@Override

public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2, long arg3){

m_TextView.setText("你的血型是:" + string[arg2]);

//设置显示当前选择的项

arg0.setVisibility(View.VISIBLE);

}

@Override

public void onNothingSelected(AdapterView<?> arg0){

// TODO Auto-generated method stub

}

);

}

}

}

------------------------------------------------------------------------------------------------------

RadioGroup , RadioButton 单选选择控件

一个单选选择由两部分组成,分别是前面的选择按钮和后面的内容。按钮通过RadioButton来实现,答案通过RadioGroup来实现

如果确定是选择哪一项那就要设置监听器setOnCheckedChangeListener.

下面有一例子:本例中使用到了String.xml文件来定义常量。

string.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

<string name="hello">Android底层是基于什么操作系统?</string>

<string name="app_name">Examples_04_07</string>

<string name="RadioButton1">Windows</string>

android 常用控件总结

<string name="RadioButton2">Linux</string>

<string name="RadioButton3">Moc os</string>

<string name="RadioButton4">Java</string>

</resources>

main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="/apk/res/android" android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

<TextView

android:id="@+id/TextView01"

android:layout_width="fill_parent"

android:layout_height="wrap_content"

android:text="@string/hello"

/>

<RadioGroup

android:id="@+id/RadioGroup01"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:orientation="vertical"

android:layout_x="3px"

android:layout_y="54px"

>

<RadioButton

android:id="@+id/RadioButton1"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:text="@string/RadioButton1"

/>

<RadioButton

本文来源:https://www.bwwdw.com/article/w5t1.html

Top