Android笔记---- Android应用界面开发(2)

TextViewEditText的功能和用法

ButtonImageButton的功能和用法

RadioButtonCheckBox的功能和用法

ToggleButton的功能和用法

时钟的功能和用法

ImageView的功能和用法

AutoCompleteTextView的功能和用法

Spinner的功能和用法

日期和时间选择器的功能和用法

消息提示(ToastNotification

 

 

TextViewEditText的功能和用法

TextView直接继承了View,它还是EditTextButton两个UI的父类。它主要的做用就是显示文本,类似于JLabel

 

从功能上讲TextView是一个文本编辑器,只是Android关闭了它的文字编辑功能。如果想要编辑文本内容,可以使用其子类: EditText

 

android:elipsize属性可支持如下几个属性值

none:不进行任何处理

start:在文本开头部分进行省略

middle:在文本中间部分进行省略

end:在文本结尾处进行省略

marquee:跑马灯的形式显示文本信息(动画横向移动)

android:ellipsize的属性值为marquee

android:marqueeRepeatLimit设置重复滚动的次数,当值设为marquee_forever时表示无限次。

android:focusableInTouchMode:是否在触摸模式下获得焦点 

android:focusable控件是否能够获取焦点

:EditText使用(用户的输入界面)

bg_border.xml

<?xml version="1.0" encoding="UTF-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
	<solid android:color="#000000"/>
	<stroke android:width="2dip" android:color="#ff0000" />
</shape>

Main.xml
<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TableRow>

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_border"
            android:text="用户名:"
            android:textSize="10sp" />

        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请填写登录帐号"
            android:selectAllOnFocus="true" />
    </TableRow>

    <TableRow>

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_border"
            android:text="密码:"
            android:textSize="10pt" />

        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:password="true" />
    </TableRow>

    <TableRow>

        <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="@drawable/bg_border"
            android:text="电话号码:"
            android:textSize="10pt" />

        <EditText
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:hint="请填写您的电话号码"
            android:phoneNumber="true"
            android:selectAllOnFocus="true" />
    </TableRow>

    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="注册" />

</TableLayout>


 

ButtonImageButton的功能和用法

Button继承了TextViewImageButton继承了ImageView。区别在于Button生成的按钮上显示文字, ImageButton显示图片。

注意: ImageButton按钮指定了android:text属性没用,即使指定了该属性,图片按钮上不会显示任何文字。

如果要定义图片随用户动作而改变,可以使用XML资源文件来定义Drawable对象,再将Drawable对象设为Buttonandroid:background属性值,或设为ImageButtonandroid:src属性值。

 

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="horizontal" >

    <TableRow>

        <!-- 普通文字按钮 -->

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/red"
            android:text="普通按钮"
            android:textSize="10pt" />
        <!-- 普通图片按钮 -->

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#000000"
            android:src="@drawable/blue" />
    </TableRow>

    <TableRow>

        <!-- 按下时显示不同图片的按钮 -->

        <ImageButton
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="#000000"
            android:src="@drawable/button_selector" />
        <!-- 带文字的图片按钮 -->

        <Button
            android:id="@+id/test"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:background="@drawable/button_selector"
            android:text="带文字的图片按钮" />
    </TableRow>

</TableLayout>


 

RadioButtonCheckBox的功能和用法

RadioButton(单选按钮)和CheckBox(复选框)都继承了Button按钮,可以直接使用Button支持的各种属性和方法。

与普通按钮不同的是,它们多了一个可选的功能,因此多了一个android:checked属性,该属性用于指定RadioButtonCheckBox初始时是否被选中。

RadioButtonCheckBox不同之处在于,一组RadioButton只能选择其中一个,因此RadioButtonRadioGroup一起使用。

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="性别:"
            android:textSize="11pt" />
        <!-- 定义一组单选框 -->

        <RadioGroup
            android:layout_gravity="center_horizontal"
            android:orientation="horizontal" >

            <!-- 定义两个单选框 -->

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男" />

            <RadioButton
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女" />
        </RadioGroup>
    </TableRow>

    <TableRow>

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="喜欢的颜色:"
            android:textSize="11pt" />
        <!-- 定义一个垂直的线性布局 -->

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center_horizontal"
            android:orientation="vertical" >

            <!-- 定义三个复选框 -->

            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:checked="true"
                android:text="红色" />

            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="蓝色" />

            <CheckBox
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="绿色" />
        </LinearLayout>
    </TableRow>

</TableLayout>


 

ToggleButton的功能和用法

ToggleButton(状态开关按钮)也是由Button派生出来的,CheckBox复选框相似,也提供两种状态。不过区别在于功能上, ToggleButton通常用于切换程序中的某种状态。

 

XML属性

方法

说明

android:checked

setChecked(boolean)

设置按钮是否被选中

android:textOff

 

设置没有选中时显示的文本

android:textOn

 

设置按钮选中时显示的文本

 

ToggleButtonTest.java

public class ToggleButtonTest extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		ToggleButton toggle = (ToggleButton)findViewById(R.id.toggle);
		final LinearLayout test = (LinearLayout)findViewById(R.id.test);
		toggle.setOnCheckedChangeListener(new OnCheckedChangeListener()
			{

				@Override
				public void onCheckedChanged(CompoundButton arg0, boolean arg1)
				{
					if(arg1)
					{
						//设置LinearLayout垂直布局
						test.setOrientation(1);
					}
					else
					{
						//设置LinearLayout水平布局
						test.setOrientation(0);
					}			
				}
			});
	}
}

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!-- 定义一个ToggleButton按钮 -->

    <ToggleButton
        android:id="@+id/toggle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:checked="true"
        android:textOff="横向排列"
        android:textOn="纵向排列" />
    <!-- 定义一个可以动态改变方向的线性布局 -->

    <LinearLayout
        android:id="@+id/test"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试按钮一" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试按钮二" />

        <Button
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="测试按钮三" />
    </LinearLayout>

</LinearLayout>


 

时钟的功能和用法

DigitalClock(数字时钟)继承了TextView,也就是说它本身是文本框,只是它里面显示的内容是当前时间,可以显示秒数。

AnalogClock(模拟时钟)继承了View组件,它重写了ViewOnDraw方法,它会在View上显示模拟时钟,不会显示当前的秒数。

Chronometer是计时器组件,也继承了TextView,它不显示当前时间,它显示的是从某起始时间开始,一共过去了多长时间。

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <!-- 定义模拟时钟 -->

    <AnalogClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
    <!-- 定义数字时钟 -->

    <DigitalClock
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="14pt" />

</LinearLayout>

 


ChronometerTest.java

public class ChronometerTest extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//获取计时器组件
		final Chronometer ch = (Chronometer)findViewById(R.id.test);
		//获取“开始”按钮
		Button start = (Button)findViewById(R.id.start);
		start.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//设置开始计时时间
				ch.setBase(SystemClock.elapsedRealtime());
				//启动计时器
				ch.start();				
			}
		});	
		ch.setOnChronometerTickListener(new OnChronometerTickListener()
		{
			@Override
			public void onChronometerTick(Chronometer ch)
			{
				//如果从开始计时到现在超过了20s。
				if(SystemClock.elapsedRealtime() - ch.getBase()
					 > 20 * 1000)
				{
					ch.stop();
				}
			}
		});
	}
}


 

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical"
	android:layout_width="fill_parent"
	android:layout_height="fill_parent"
	android:gravity="center_horizontal"
	>
<Chronometer
	android:id="@+id/test"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:textSize="12pt"
	android:textColor="#ffff0000"
	/>
<Button
	android:id="@+id/start"  
	android:layout_width="wrap_content" 
	android:layout_height="wrap_content" 
	android:text="启动"
	/>		
</LinearLayout>


 

ImageView的功能和用法

ImageView继承了View组件,它的主要功能就是显示图片,其实它不仅可以显示图片,任何Drawable对象都可使用ImageView来显示。

 

XML属性

方法

说明

android:adjustViewBounds

setAdjustViewBounds(boolean)

设置ImageView是否调整自己的边界来保持所显示图片的长宽比

android:maxHeight

setmaxHeight(int)

设置ImageView的最大高度

android:maxWidth

setmaxWidth(int)

设置ImageView的最大宽度

android:scaleType

setScaleType(ImageView.ScaleType)

设置所显示图片如何缩放或移动以适应ImageView的大小

android:src

setImageResource(int)

设置ImageView所显示的Drawable对象的ID

 

 

 

AutoCompleteTextView的功能和用法

AutoCompleteTextView(自动完成文本框)从EditText派生而来,比普通文本编辑框多一个功能:当用户输入一定字符之后,自动完成文本框会显示一个下拉菜单,供用户选择。当用户选择某个菜单项之后, AutoCompleteTextView按用户选择自动填写该文本框。

AutoCompleteTextView除了可以使用EditText提供的XML属性和方法外,还支持如下表所示的常用的XML属性。

 

XML属性

方法

说明

android:completionHint

setCompletionHint(CharSequence) 

出现下拉菜单时中的提示标题

android:completionThreshold

setThreshold(int)

设置用户至少输入几个字符才会提示

android:dropDownHeight

setdropDownHeight(int)

设置下拉菜单的高度

 

 

AutoCompleteTextViewTest.java

public class AutoCompleteTextViewTest extends Activity
{
	//定义字符串数组,作为提示的文本
	String[] books = new String[]{
		"hello,Android",
		"hello,Ajax",
		"hello,XML",
		"SSH讲义"
	};
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		//创建一个ArrayAdapter,封装数组
		ArrayAdapter<String> aa = new ArrayAdapter<String>(
			this,
			android.R.layout.simple_dropdown_item_1line,
			books);
		AutoCompleteTextView actv = (AutoCompleteTextView)
			findViewById(R.id.auto);
		//设置Adapter
		actv.setAdapter(aa);
		
	}
}

 

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <!--
     定义一个自动完成文本框
	,指定输入一个字符后进行提示
    -->

    <AutoCompleteTextView
        android:id="@+id/auto"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:completionHint="请选择您喜欢的图书:"
        android:completionThreshold="1"
        android:dropDownHorizontalOffset="20dp" />

</LinearLayout>


 

Spinner的功能和用法

Spinner (列表选择框),Android中的Spinner的列表选择框并不是需要显示下拉列表的,而是相当于弹出一个菜单供用户选择。

SpinnerViewGroup的间接子类,因此可以作为容器使用, Spinner 支持如下表所示的XML属性。

 

XML属性

说明

android:prompt

设置该列表选择框的提示

android:entries

使用数组资源设置该下拉列表框的的列表项目。

XML属性

方法

说明

android:completionHint

setCompletionHint(CharSequence) 

出现下拉菜单时中的提示标题

android:completionThreshold

setThreshold(int)

设置用户至少输入几个字符才会提示

android:dropDownHeight

setdropDownHeight(int)

设置下拉菜单的高度

 

 

 

日期和时间选择器的功能和用法

DatePickerTimePicker都是从FrameLayout派生而来,其中DatePicker供用户选择日期, TimePicker供用户选择时间。

如果需要获取用户选择的日期、时间,则可以通过DatePicker添加OnDateChangedListener进行监听、为TimePicker添加OnTimerChangedListener进行监听来实现。

 

ChooseDate.java

public class ChooseDate extends Activity
{
	//定义5个记录当前时间的变量
	private int year;
	private int month;
	private int day;
	private int hour;
	private int minute;
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		DatePicker datePicker = (DatePicker)findViewById(R.id.datePicker);
		TimePicker timePicker = (TimePicker)findViewById(R.id.timePicker);
		//获取当前的年、月、日、小时、分钟
		Calendar c = Calendar.getInstance();
		year = c.get(Calendar.YEAR);
		month = c.get(Calendar.MONTH);
		day = c.get(Calendar.DAY_OF_MONTH);
		hour = c.get(Calendar.HOUR);
		minute = c.get(Calendar.MINUTE);
		//初始化DatePicker组件,初始化时指定监听器
		datePicker.init(year , month ,day 
			, new OnDateChangedListener()
		{

			@Override
			public void onDateChanged(DatePicker arg0, int year
				, int month, int day)
			{
				ChooseDate.this.year = year;
				ChooseDate.this.month = month;
				ChooseDate.this.day = day;
				//显示当前日期、时间
				showDate(year, month , day , hour, minute);
			}
		});
		//为TimePicker指定监听器
		timePicker.setOnTimeChangedListener(new OnTimeChangedListener()
		{
			@Override
			public void onTimeChanged(TimePicker arg0, int hour, int minute)
			{
				ChooseDate.this.hour = hour;
				ChooseDate.this.minute = minute;
				//显示当前日期、时间
				showDate(year, month , day , hour, minute);				
			}
		});
	}
	//定义在EditText中显示当前日期、时间的方法
	private void showDate(int year, int month , int day
			, int hour , int minute)
	{
		EditText show = (EditText)findViewById(R.id.show);
		show.setText("您的购买日期为:" + year + "年" + month + "月"
			+ day + "日  " + hour + "时" + minute + "分");
	}	
}

 

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="选择购买本书的具体时间" />
    <!-- 定义一个DatePicker组件 -->

    <DatePicker
        android:id="@+id/datePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />
    <!-- 定义一个TimePicker组件 -->

    <TimePicker
        android:id="@+id/timePicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal" />
    <!-- 显示用户输入日期、时间的控件 -->

    <EditText
        android:id="@+id/show"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:cursorVisible="false"
        android:editable="false" />

</LinearLayout>


 

消息提示(ToastNotification

Toast是一种非常方便的提示消息框,它会在程序界面上显示一个简单的提示信息,这个提示框用于向用户生成简单的提示信息。它具有两个特点:

       Toast提示信息不会获得焦点。

       Toast提示信息过一段时间会自动消息。

使用Toast生成消息的步骤如下:

       调用Toast的构造器或makeText方法创建一个Toast对象。

       调用Toast的方法来设置该消息提示的对齐方式、页边距、显示内容等。

       调用Toastshow()方法将它显示出来。

一般用Toast显示文本信息,如果想要显示图片信息,调用 ToastsetView()方法。

 

ToastTest.java

public class ToastTest extends Activity
{
	@Override
	public void onCreate(Bundle savedInstanceState)
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		Button simple = (Button)findViewById(R.id.simple);
		//为按钮的单击事件绑定事件监听器
		simple.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//创建一个Toast提示信息
				Toast toast = Toast.makeText(ToastTest.this
					, "简单的提示信息"
					// 设置该Toast提示信息的持续时间
					, Toast.LENGTH_SHORT);
				toast.show();
			}
		});
		Button bn = (Button)findViewById(R.id.bn);
		//为按钮的单击事件绑定事件监听器
		bn.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View source)
			{
				//创建一个Toast提示信息
				Toast toast = Toast.makeText(ToastTest.this
					, "带图片的的提示信息"
					// 设置该Toast提示信息的持续时间
					, Toast.LENGTH_LONG);				
				toast.setGravity(Gravity.CENTER, 0, 0);
				//获取Toast提示里原有的View
				View toastView = toast.getView();
				//创建一个ImageView
				ImageView image = new ImageView(ToastTest.this);
				image.setImageResource(R.drawable.tools);
				//创建一个LinearLayout容器
				LinearLayout ll = new LinearLayout(ToastTest.this);
				//向LinearLayout中添加图片、原有的View
				ll.addView(image);
				ll.addView(toastView);
				toast.setView(ll);
				toast.show();				
			}
		});	
	}
}

 

Main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center_horizontal"
    android:orientation="vertical" >

    <Button
        android:id="@+id/simple"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="显示简单提示" />

    <Button
        android:id="@+id/bn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="显示带图片的提示" />

</LinearLayout>


 

       Notification是显示在手机状态栏的消息,所谓手机状态栏,位于手机屏幕的最上方,显示了手机当前的网络状态、电池状态、时间等。

       Notification所代表的是一种具有全局效果的通知, 程序一般通过NotificationManager服务来发送Notification

使用Notification的步骤:

        调用getSystemService(NOTIFICATION_SERVICE)方法获取系统NotificationManager服务。

       通过构造器创建一个Notification对象。

       为Notification对象设置各种属性。

       通过NotificationManager发送Notification


 

 

 

 

 

 

 

 

Android开发教程及笔记-完整版.pdf》是一本关于Android开发的教程和笔记的完整版电子书。这本电子书主要介绍了Android开发所需的各种知识和技术,对于想要学习Android开发的人来说是一本非常有价值的资料。 这本电子书包含了Android开发的基础知识,如Android系统的介绍、Android开发环境的搭建以及常用开发工具的使用方法。同时,它也详细介绍了Android应用程序的开发流程,包括界面设计、布局管理、事件处理、数据库操作等方面的内容,使读者能够全面掌握Android应用程序的开发技巧。 此外,这本电子书还介绍了一些高级的Android开发技术,如网络编程、多媒体处理、传感器应用等方面的知识。通过学习这些高级技术,读者可以进一步提升自己的Android开发水平,设计出更加优秀和复杂的Android应用程序。 除了知识点的介绍之外,这本电子书还提供了大量的实例和代码,让读者能够通过实践来巩固所学知识。同时,它还给出了一些常见问题的解决方法和开发经验的分享,帮助读者更好地理解和应用所学的知识。 总之,《Android开发教程及笔记-完整版.pdf》是一本非常实用的Android开发学习资料,其全面而详细的内容将帮助读者系统地学习和掌握Android开发的技能,为实际项目的开发提供了很好的指导。无论是初学者还是有一定经验的开发者,都可以从中受益匪浅。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值