Android作业
作业题目:
- 综合使用TextView,ImageView,RadioButton控件实现一个图片选择器,通过勾选花朵的名称显示相应的图片,界面如附件图1、图2所示。具体要求如下:
a)使用滚动字幕显示标题“请选择你喜欢的花“
b) 使用RadioGroup 和RadioButton 创建两行三列的单选按钮;
c) 当用户选中某一花名,在页面上显示该种花的图片
- 完成如附件图3、图4所示的任务:
a) 图片随着鼠标移动位置,并显示出当前位置的坐标信息。
b) 当用户点击退出按钮,给出提示信息:“再按一次退出程序”。
**



xml的代码为:
标题"please choose a flower"
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Please choose a floweer"
android:singleLine="true"
android:marqueeRepeatLimit="marquee_forever"
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical"
android:textSize="20sp"
android:textColor="@android:color/black" />
显示图片
<ImageView
android:id="@+id/hua"
android:layout_width="200dp"
android:layout_height="200dp"
android:src="@drawable/mudan"/>
</LinearLayout>
```
**在drawable中导入所需要的图片,然后使用RadioGroup和RadioButton创建两行三列的单选按钮**
<RadioButton
android:id="@+id/rb_meihua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingEnd="20dp"
android:text="梅 花"/>
<RadioButton
android:id="@+id/rb_mudan"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingEnd="20dp"
android:text="牡丹花"/>
<RadioButton
android:id="@+id/rb_shinanhua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingEnd="20dp"
android:text="石楠花"/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingLeft="20dp"
android:orientation="horizontal">
<RadioGroup
android:id="@+id/flower2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<RadioButton
android:id="@+id/rb_xiangyahua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingEnd="20dp"
android:textSize="20sp"
android:text="象牙花"/>
<RadioButton
android:id="@+id/rb_xiuqiuhua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:paddingEnd="20dp"
android:text="绣球花"/>
<RadioButton
android:id="@+id/rb_yulanhua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="20sp"
android:text="玉兰花"/>
</RadioGroup>
</LinearLayout>
```
**这里如果用一个RadioGroup和六个RadioButton来完成就会在一行显示,所以我用两个RadioGroup来实现这个功能**
#在activity中如下:
***
**定义相关组件:**
private RadioButton rbmeihua;
private RadioButton rbmudan;
private RadioButton rbshinanhua;
private RadioGroup flower;
private RadioGroup flower2;
private RadioButton rbxiuqiuhua;
private RadioButton rbyulanhua;
private RadioButton rbxiangyahua;
private String mNotificationManager;
private ImageView hua;
ImageView meihua, mudan, shinanhua, xiuqiuhua, yulanhua, xiangyahua;
获取这些组件findViewId
hua = (ImageView) findViewById(R.id.hua);
flower = (RadioGroup) findViewById(R.id.flower);
rbmeihua = (RadioButton) findViewById(R.id.rb_meihua);
rbmudan = (RadioButton) findViewById(R.id.rb_mudan);
rbshinanhua = (RadioButton) findViewById(R.id.rb_shinanhua);
flower2 = (RadioGroup) findViewById(R.id.flower2);
rbxiuqiuhua = (RadioButton) findViewById(R.id.rb_xiuqiuhua);
rbyulanhua = (RadioButton) findViewById(R.id.rb_yulanhua);
rbxiangyahua = (RadioButton) findViewById(R.id.rb_xiangyahua);
根据RadioButton的选中状态获取,并ImageView的setImageResource(R.drawable.XX)设置图片
rbmeihua.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (rbmeihua.isChecked()) {
hua.setImageResource(R.drawable.meihua);
}
}
});
rbmudan.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (rbmudan.isChecked()) {
hua.setImageResource(R.drawable.mudan);
}
}
});
rbshinanhua.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (rbshinanhua.isChecked()) {
hua.setImageResource(R.drawable.shinanhua);
}
}
});
rbxiuqiuhua.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (rbxiuqiuhua.isChecked()) {
hua.setImageResource(R.drawable.xiuqiuhua);
}
}
});
rbyulanhua.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (rbyulanhua.isChecked()) {
hua.setImageResource(R.drawable.yulanhua);
}
}
});
rbxiangyahua.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (rbxiangyahua.isChecked()) {
hua.setImageResource(R.drawable.xiangyahua);
}
}
});
}
运行效果为


随着鼠标移动显示当前位置的坐标信息:
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
float x = event.getX();
float y = event.getY();
String pos = "x坐标:" + x + ",y坐标:" + y;
Toast.makeText(this, pos, Toast.LENGTH_LONG).show();
}
return super.onTouchEvent(event);
}
运行效果:

当用户点击退出按钮,给出提示信息:“再按一次退出程序”
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getKeyCode() == KeyEvent.KEYCODE_BACK) {
if (event.getAction() == KeyEvent.ACTION_DOWN && event.getRepeatCount() == 0) {
this.exitApp();
}
return true;
}
return super.dispatchKeyEvent(event);
}
private void exitApp() {
// 判断2次点击事件时间
long exitTime = 0;
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(Flower2Activity.this, "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
}
}
}
运行结果:

浙公网安备 33010602011771号