安卓作业3.21
-
任务1
-
要求:
1. 图片随着鼠标移动位置,并显示位置的坐标信息 2. 当用户单机退出按钮时,给出提示信息:“再按一次退出程序”

——————————————————————————————
xml文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_move_dog"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="com.example.administrator.move_dog.MoveDog"
android:weightSum="1">
<ImageView
android:id="@+id/img_cat"
android:layout_width="70dp"
android:layout_height="67dp"
android:layout_gravity="center_vertical"
android:src="@drawable/abc1" />
</LinearLayout>
接下来在java中实现要求的效果,实现要求1只需要重载一个ontouchevent事件即可
java文件代码:
public class MoveDog extends AppCompatActivity {
private ImageView img_cat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_move_dog);
img_cat = (ImageView) findViewById(R.id.img_cat);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_MOVE){
float x = event.getX();
float y = event.getY();
String cat = "x坐标:" + x + "y坐标:" + y;
Toast.makeText(this,cat,Toast.LENGTH_LONG).show();
img_cat.setX(x - 50);
img_cat.setY(y - 200);
}
return super.onTouchEvent(event);
}
————————————————————————
在实现要求2中的效果 用了点击主菜单中的退出菜单弹出对话框的方式
代码如下:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(menu.NONE,Menu.FIRST+1,1,"退出").setIcon(android.R.drawable.ic_menu_delete);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case Menu.FIRST+1:
AlertDialog.Builder builder = new AlertDialog.Builder(MoveDog.this);
builder.setMessage("确定关闭程序吗?");
builder.setPositiveButton("确定",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface,int i) {
finish();
}
});
builder.setNegativeButton("取消",new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialogInterface,int i){
dialogInterface.dismiss();
}
});
builder.create().show();
break;
}
return super.onOptionsItemSelected(item);
}
实现效果:


- 任务2
- 要求:
- 1.使用滚动字幕显示标题”please choose a flower you like“
- 2.使用RadioGroup和RadioButton创建两行三列的单选按钮
- 3.当用户选中一花名时,在页面上显示这种花的图片
效果图:

滚动字幕效果的实现
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="50sp"
android:textColor="@color/colorAccent"
android:text="Please choose a flower you like!"
android:ellipsize="marquee" //设置文字显示方式为滚动显示
android:marqueeRepeatLimit="marquee_forever" //文字滚动次数为永久
android:focusable="true" //获取焦点
android:focusableInTouchMode="true"
android:singleLine="true" //单行显示
android:id="@+id/txt_wz" />
完整xml文件代码
```javascript
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp">
</LinearLayout>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="141dp">
<ImageView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/img" />
</RelativeLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="12.42">
</LinearLayout>
<LinearLayout
android:layout_width="390dp"
android:layout_height="wrap_content"
android:orientation="vertical">
<RadioGroup
android:id="@+id/group_one"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="center">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="梅 花 "
android:textSize="20sp"
android:id="@+id/rbtn_10"
android:onClick="myclick"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="石楠花 "
android:textSize="20sp"
android:id="@+id/rbtn_11"
android:onClick="myclick11"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="象牙花"
android:textSize="20sp"
android:id="@+id/rbtn_12"
android:onClick="myclick12"/>
</RadioGroup>
<RadioGroup
android:id="@+id/group_two"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="horizontal">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="绣球花"
android:textSize="20sp"
android:id="@+id/rbtn_20"
android:onClick="myclick20"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="玉兰花"
android:textSize="20sp"
android:id="@+id/rbtn_21"
android:onClick="myclick21"/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="牡丹花 "
android:textSize="20sp"
android:id="@+id/rbtn_22"
android:onClick="myclick22"/>
</RadioGroup>
</LinearLayout>
```
接下来说点击事件的执行 在监听事件是通过在xml布局文件中对应得Activity中定义一个事件处理方法 public void myClick(View source) source对应事件源(组件) 接着布局文件中对应要触发事件的组建,设置一个属性:onclick = "myclick"来实现 在网上学到的方法在做作业中试了试
参考[](http://www.runoob.com/w3cnote/android-tutorial-listen-event-handle.html)
java文件
public class MainActivity extends AppCompatActivity {
private RadioButton rbtn_10;
private RadioButton rbtn_11;
private RadioButton rbtn_12;
private RadioButton rbtn_20;
private RadioButton rbtn_21;
private RadioButton rbtn_22;
private ImageView img;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rbtn_10=(RadioButton)findViewById(R.id.rbtn_10);
rbtn_11=(RadioButton)findViewById(R.id.rbtn_11);
rbtn_12=(RadioButton)findViewById(R.id.rbtn_12);
rbtn_20=(RadioButton)findViewById(R.id.rbtn_20);
rbtn_21=(RadioButton)findViewById(R.id.rbtn_21);
rbtn_22=(RadioButton)findViewById(R.id.rbtn_22);
img=(ImageView)findViewById(R.id.img);
}
public void myclick (View source) {
if (rbtn_10.isChecked()) {
img.setImageResource(R.drawable.mei);
rbtn_11.setChecked(false);
rbtn_12.setChecked(false);
rbtn_20.setChecked(false);
rbtn_21.setChecked(false);
rbtn_22.setChecked(false);
}
}
public void myclick11 (View source){
if (rbtn_11.isChecked()) {
img.setImageResource(R.drawable.shi);
rbtn_10.setChecked(false);
rbtn_12.setChecked(false);
rbtn_20.setChecked(false);
rbtn_21.setChecked(false);
rbtn_22.setChecked(false);
}
}
public void myclick12 (View source){
if (rbtn_12.isChecked()) {
img.setImageResource(R.drawable.xiang);
rbtn_11.setChecked(false);
rbtn_10.setChecked(false);
rbtn_20.setChecked(false);
rbtn_21.setChecked(false);
rbtn_22.setChecked(false);
}
}
public void myclick20 (View source){
if (rbtn_20.isChecked()) {
img.setImageResource(R.drawable.xiu);
rbtn_11.setChecked(false);
rbtn_12.setChecked(false);
rbtn_10.setChecked(false);
rbtn_21.setChecked(false);
rbtn_22.setChecked(false);
}
}
public void myclick21 (View source){
if (rbtn_21.isChecked()) {
img.setImageResource(R.drawable.yu);
rbtn_11.setChecked(false);
rbtn_12.setChecked(false);
rbtn_20.setChecked(false);
rbtn_10.setChecked(false);
rbtn_22.setChecked(false);
}
}
public void myclick22 (View source){
if (rbtn_22.isChecked()) {
img.setImageResource(R.drawable.mu);
rbtn_11.setChecked(false);
rbtn_12.setChecked(false);
rbtn_20.setChecked(false);
rbtn_21.setChecked(false);
rbtn_10.setChecked(false);
}
}
}
效果图:




浙公网安备 33010602011771号