Android开发03—Android常用基本控件(下)

Android开发03—Android常用基本控件(下)


1. 单选按钮和复选按钮
CheckBox和RadioButton控件都只有选中和未选中两种状态,不同的是RadioButton是单选按钮,需要便知道RadioGroup中,同一时刻一个RadioGroup中只能有一个按钮处于选中状态。

使用举例:
public class SampleDemo extends Activity
{
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstatceState);
setContentView(R.layout.main);
CheckBox cb = (CheckBox) findViewById(R.id.CheckBox1);
cb.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){
setBulbState(isChecked);

}
});
RadioButton rb = (RadioButton) findViewById(R.id.off);
rb.setOnCheckedChangeListener(new OnCheckedChangeListener(){
public void onCheckedChanged(CompoundButton buttonView,boolean isChecked){
setBulbState(isChecked);


}
});
}
public void setBulbState(boolean state){
ImageView iv = (ImageView) findViewById(R.id.ImageView01);
iv.setImageResource((state)?R.drawable.bulb_on:R.drawable.bulb_off);
CheckBox cb = (CheckBox) this.findViewById(R.id.CheckBox1);

cb.setText((state)?R.string.off:R.string.on);
cb.setChecked(state);
RadioButton rb = (RadioButton) this.findViewById(R.id.off);

rb.setChecked(state);
rb = (RadioButton) findViewById(R.id.on);
rb.setChecked(state);

}
}
2. 图片控件
ImageView控件负责显示图片,其图片的来源既可以是资源文件的id,也可以是Drawable对象或BitMap对象,还可以是ContentProvider的Uri。

实例:ImageView的用法
string.xml
	<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">AbsoluteExample</string>
<string name="next">下一张</string>
<string name="previous">上一张</string>
<string name="alpha_plus">透明度增加</string>
<string name="alpha_minus">透明度减少</string>
</resources>
main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical">
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/iv" android:layout_gravity="center_horizontal" android:src="@drawable/pic1" ></ImageView>
<LinearLayout android:layout_height="wrap_content" android:id="@+id/linearLayout2" android:layout_gravity="center_horizontal" android:layout_width="fill_parent" android:orientation="horizontal">
<Button android:layout_height="wrap_content" android:layout_width="wrap_content" android:id="@+id/previous" android:text="@string/previous" android:gravity="center_horizontal" android:layout_gravity="center_horizontal"></Button>
<Button android:layout_height="wrap_content" android:id="@+id/alpha_plus" android:layout_width="wrap_content" android:text="@string/alpha_plus" android:gravity="center_horizontal" android:layout_gravity="center_horizontal"></Button>
<Button android:layout_height="wrap_content" android:id="@+id/alpha_minus" android:layout_width="wrap_content" android:text="@string/alpha_minus" android:gravity="center_horizontal" android:layout_gravity="center_horizontal"></Button>
<Button android:layout_height="wrap_content" android:id="@+id/next" android:layout_width="wrap_content" android:text="@string/next" android:gravity="center_horizontal" android:layout_gravity="center_horizontal"></Button>
</LinearLayout>
</LinearLayout>

Activity部分代码:
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;


public class MyAndroidProject extends Activity {
ImageView iv;
Button btnNext;
Button btnPrevious;
Button btnAlphaPlus;
Button btnAlphaMinus;
int currImgId = 0;
int alpha = 255;
int[] imgId ={
R.drawable.pic1,
R.drawable.pic2,
R.drawable.pic3
};
private View.OnClickListener myListener = new View.OnClickListener() {

public void onClick(View v) {
// TODO Auto-generated method stub
if(v == btnNext){
currImgId = (currImgId+1) %imgId.length;
iv.setImageResource(imgId[currImgId]);
}
else if(v == btnPrevious){
currImgId = (currImgId-1+imgId.length) %imgId.length;
iv.setImageResource(imgId[currImgId]);
}
else if(v == btnAlphaPlus){
alpha -= 25;
if(alpha < 0){
alpha = 0;
}
iv.setAlpha(alpha);
}
else if(v == btnAlphaMinus){
alpha +=25;
if(alpha >255){
alpha = 255;
}
iv.setAlpha(alpha);
}
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
iv = (ImageView) findViewById(R.id.iv);
btnNext = (Button) findViewById(R.id.next);
btnPrevious = (Button) findViewById(R.id.previous);
btnAlphaPlus = (Button) findViewById(R.id.alpha_plus);
btnAlphaMinus = (Button) findViewById(R.id.alpha_minus);

btnNext.setOnClickListener(myListener);
btnPrevious.setOnClickListener(myListener);
btnAlphaPlus.setOnClickListener(myListener);
btnAlphaMinus.setOnClickListener(myListener);
}
}

3. 时钟控件
AnalogClock和DigitalClock都负责显示时钟,所不同的是AnalogClock控件显示模拟时钟,且只显示时针和分针,而digital显示数字时钟,可精确到秒
直接在main.xml中定义时钟控件即可。


4. 日期与时间选择控件
DatePicker继承自FrameLayout类,主要功能是向用户提供包含年,月,日的日期数据,并允许用户进行选择。如果要捕获用户修改日期选择控件中数据的时间,需要为DatePicker添加onDateChangedListener监听器。
TimePicker同样继承自FrameLayout类。时间选择控件向用户显示一天中的时间,并允许用户进行选择,如果要捕获用户修改时间数据的时间,便需要为TimePicker添加OnTimeChangedListener监听器。

案例:
main.xml
	<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/linearLayout1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<DatePicker android:layout_gravity="center_horizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/datePicker1"></DatePicker>
<EditText android:layout_height="wrap_content" android:text="EditText" android:layout_width="fill_parent" android:id="@+id/editText1" android:cursorVisible="false" android:editable="false"></EditText>
<TimePicker android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/timePicker1" android:layout_gravity="center_horizontal"></TimePicker>
<EditText android:layout_height="wrap_content" android:text="EditText" android:layout_width="fill_parent" android:id="@+id/editText2" android:cursorVisible="false" android:editable="false"></EditText>
</LinearLayout>


Activity:
package qijia.si;

import java.util.Calendar;

import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;


public class MyAndroidProject extends Activity {


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
DatePicker dp = (DatePicker) findViewById(R.id.datePicker1);
TimePicker tp = (TimePicker) findViewById(R.id.timePicker1);

Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int monthOfYear = c.get(Calendar.MONTH);
int dayOfMonth = c.get(Calendar.DAY_OF_MONTH);

dp.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
public void onDateChanged(DatePicker view,int year, int monthOfYear,int dayOfMonth){
flushDate(year,monthOfYear,dayOfMonth);
}
});

tp.setOnTimeChangedListener(new OnTimeChangedListener(){
public void onTimeChanged(TimePicker view,int hourOfDay,int minute){
flushTime(hourOfDay,minute);
}
});
}
public void flushDate(int year,int monthOfYear,int dayOfMonth){
EditText et = (EditText) findViewById(R.id.editText1);
et.setText("您选择的日期是: "+year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日");
}
public void flushTime(int hourOfDay,int minute){
EditText et = (EditText) findViewById(R.id.editText2);
et.setText("您选择的时间是: "+hourOfDay+"时"+minute+"分");

}
}

5. 动画播放技术
动画播放技术主要有两种:帧动画和补间动画。
1) 帧动画
帧动画主要用到的类是AnimationDrawable,每个帧动画都是一个AnimationDrawable对象
定义帧动画可以在代码中直接进行,也可以通过XML文件进行定义,定义帧动画的XML文件将存放在res/anim目录下。XML文件中指定了图片图片帧出现的顺序及每个帧的连续时间。

anim.xml
<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot = "false">
<item android:drawable = "@drawable/f1" android:duration="500" android:visible =
"true"/>
<item android:drawable = "@drawable/f2" android:duration="500" android:visible =
"true"/>
<item android:drawable = "@drawable/f3" android:duration="500" android:visible =
"true"/>
<item android:drawable = "@drawable/f4" android:duration="500" android:visible =
"true"/>
</animation-list>


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" android:id="@+id/linearLayout1">
<ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/imageView1" android:layout_gravity="center_horizontal" android:src="@anim/anim"></ImageView>
<Button android:layout_height="wrap_content" android:id="@+id/button1" android:text="click" android:layout_width="fill_parent" android:layout_gravity="center_horizontal"></Button>
</LinearLayout>



Activity:
package qijia.si;

import android.app.Activity;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;


public class MyAndroidProject extends Activity {


/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener(){
public void onClick(View v){
ImageView iv = (ImageView) findViewById(R.id.imageView1);
iv.setBackgroundResource(R.anim.anim);
AnimationDrawable ad = (AnimationDrawable) iv.getBackground();
ad.start();
}
});

}
}
2)补间动画
补间动画作用于View对象,主要包括View对象的位置,尺寸,旋转角度和透明度的变换。
补间动画可以通过XML声明也可以在代码中动态定义。推荐使用XML因为XML文件可读性及可用性高,方便替换。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值