Android开发基础4:事件处理和交互实现程序设计

应用前提:Android开发中,事件是用户对图形界面的操作,Android应用程序通过事件和信息来实现人机交互。

事件包括:按下、弹起、滑动、双击。

信息包括:信息框、对话框、通知。

本节学习和Android中与事件处理和交互相关的组件及知识。

每个工程下面的模块必须做的工作!

布局文件.xml中必须设置的是:根目录为<LinearLayout>,里面添加android:orientation的方向属性为vertical。

1.Toast--显示信息提示框

应用场景:App注册界面,用户发送手机号码进行验证时,用户单击“发送验证码”后,页面下方会出现一条信息“已发送,请注意查收”。信息出现3~5s然后自动消失。这样的就是Toast提示信息。

但是注意:我们常说这种提示信息是和对应事件匹配使用。比如点击--按钮,就需要在点击按钮时设置Toast提示框。

1.1.常用的两个方法:

(1).makeText(Context context,CharSequence text,int duration)创建一个Toast。context的参数为上下文MainActivity、text为Toast提示内容:字符串、duration为Toast停留时间:LENGT_SHORT/LENGTH_LONG。

(2).show()显示这个Toast

    *    .setGravity(int gravity,int xOffset,int yOffset)设置Toast的位置。

    *    .addView(图片名称)设置Toast的图片。

1.2.步骤:

(1)在xml布局文件中添加Button控件(按钮控件)。

(2)在java类文件中创建Button对象,并在onCreate方法中使用findViewById(R.id.按钮id名)将Button对象和对应布局文件的控件绑定。

(3)使用Toast类的方法makeText和show方法创建和显示Toast。ex:Toast.makeText(上下文MainActivity.this,“在Toast要显示的字符串”,Toast.LENGTH_SHORT(显示时间长短)).show()     

   1.3.Toast种类:

普通的Toast提示框:

Toast.makeText().show()

带有图片的Toast提示框:

1.4.代码及结果

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnok"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ok"
        android:layout_margin="10dp"
        android:textSize="50sp"/>

</LinearLayout>
public class MainActivity extends AppCompatActivity {
    Button btnok;
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnok=findViewById(R.id.btnok);
        btnok.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Toast t=Toast.makeText(MainActivity.this,"已经确认",Toast.LENGTH_SHORT);
                t.show();
                 //show显示Toast
                t.setGravity(Gravity.CENTER,0,0);
                //setGravity设置Toast的位置,这个Gravity.CENTER,0,0就正好在中间
                ImageView image1=new ImageView(MainActivity.this);
                image1.setImageResource(R.mipmap.ic_launcher);
                LinearLayout toastview=(LinearLayout) t.getView();
                toastview.addView(image1);//添加到线性布局中显示,这样就可以显示图片了

                Toast.makeText(MainActivity.this,"ok",Toast.LENGTH_SHORT).show();
}

 

2.AlertDialog对话框:

应用场景:在APP界面中选择退出时,通常会弹出一个对话框,让用户选择是否退出,这种提示框就是Dialog提示框,内容包括:内容:图标、标题、内容、按钮。需要用户做出决定再继续行动。

1.1.常用的方法

(1).setIcon(int iconId)方法.设置Dialog图标。

(2).setTitle(CharSequence  message)方法,设置Dialog图标。

(3).setMessage(CharSequence message)方法,设置Dialog内容。

(4).setPostiveButton(CharSequence text,DialogInterface.OnClickListener listener)方法,设置确认按钮

(5).setSingleChioceItems(CharSequence[] items,intcheckItem,android.content.DialogInterface.OnClickListener listener)设置单选列表

(6).create()方法,创建Dialog。

(7).show()方法,显示Dialog。

1.2.步骤

(1)创建AlertDialog类下面的构造器Builder。

(2)Builder调用方法设置对话框样式。设置对话框图标:setIcon;设置对话框标题:setTitle;设置对话框按钮setPositiveButton“确定”键按钮;setNegativeButton”取消“键按钮;setNeutralButton"忽略"按钮。

(3)Builder.create().show()创建展示对话框。Builder调用AlertDialog类的create()和show()按钮创建并显示对话框。

1.3Dialog种类

普通对话框

单选对话框

多选对话框

1.4代码及结果

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Button
        android:id="@+id/btnok"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="ok"
        android:layout_margin="10dp"
        android:textSize="50sp"/>
</LinearLayout>
public class MainActivity extends AppCompatActivity {
    Button btnok;
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnok=findViewById(R.id.btnok);

 @Override
            public void onClick(View view) {
   //1.应该先创建Builder对象
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                //最简单是提示框就是这四个部分,图标、标题,按钮,内容
                builder.setTitle("警告");
                builder.setIcon(R.mipmap.ic_launcher);
                // 普通对话框   builder.setMessage("是否退出系统");
                //单选对话框、多选对话框
                final String []city={"北京","上海","广州","成都"};
                builder.setSingleChoiceItems(city,0,null);
                builder.setPositiveButton("是", new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialogInterface,int i){
                        finish();
                    }
                });
                //注意构造器构造完成后,不要忘记使用create构造dialog
                builder.setNegativeButton("否",null);
                builder. setNeutralButton("忽略",null);
                AlertDialog dialog=builder.create();
                dialog.show();
            }
        });
}

 

3.Menu

应用场景:对内容或事件进行分类触发,菜单下面有子菜单。

1.1.常见方法:

1.2步骤:

(1).手动创建菜单资源文件--res-->右键选择Menu Resource Dictionary-->资源类型选择menu-->menu文件右键创建Menu Recource File。

   (2).menu.xml文件的根目录设置为<menu>,并在item菜单选项里面填写属性。id,title。

(3).在java类文件中添加响应菜单选择的代码

 

1.4.代码及结果

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@+id/add_item" android:title="添加"/>
    <item android:id="@+id/delete_item" android:title="删除"/>
    <item android:id="@+id/modify_item" android:title="修改"/>
    <item android:id="@+id/exit_item" android:title="退出"/>
</menu>

 

public class MainActivity extends AppCompatActivity {
 //重写获取菜单方法
    @Override
    public boolean onCreateOptionsMenu(Menu menu){
        //R表示获取资源文件
        getMenuInflater().inflate(R.menu.main_menu,menu);
        boolean b = true;
        return b;
    }
    @SuppressLint("MissingInflate")
    //这个是Menu菜单的监听器,退出界面就会提示:单击了添加菜单

//这个是Menu菜单的监听器,退出界面就会提示:单击了添加菜单
    @Override
    public boolean onOptionsItemSelected(@NonNull MenuItem item){
        switch(item.getItemId()){
            case R.id.add_item:
                Toast.makeText(MainActivity.this,"单击了添加菜单",Toast.LENGTH_SHORT).show();
                break;
            case R.id.modify_item:
                Toast.makeText(MainActivity.this,"单击了添加菜单",Toast.LENGTH_SHORT).show();
                break;
            case R.id.delete_item:
                Toast.makeText(MainActivity.this,"单击了添加菜单",Toast.LENGTH_SHORT).show();
                break;
            case R.id.exit_item:
                Toast.makeText(MainActivity.this,"单击了添加菜单",Toast.LENGTH_SHORT).show();
                finish();
                break;
            default:
        }
        return true;
    }

 

4.下拉列表框

应用场景:提供一系列可以供用户选择的列表项。下拉列表通常在右侧会有一个小三角图标。

1.1.常用方法:

1.2.步骤:

下拉列表--Sprinner控件
1.在xml布局文件中添加spinner控件
2.定义对象--绑定控件--设置下拉列表项--创建适配器Adapter--让控件显示数据

Q:为啥没有显示下拉框?--因为你没有写Android:orientation=“vertical”。
 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <Spinner
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/sn_course"/>
    <!--   下拉列表在xml布局文件中无法设置下拉选项-->

</LinearLayout>
public class MainActivity extends AppCompatActivity {
    Spinner sncource;
    //步骤三--设置spinner下拉列表项
    private String[] course={"语文","数学","英语","政治","历史"};
 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btnok=findViewById(R.id.btnok);
        //步骤1--
        sncource=findViewById(R.id.sn_course);
        ArrayAdapter adapter=new ArrayAdapter(MainActivity.this, android.R.layout.simple_spinner_dropdown_item,course);
        sncource.setAdapter(adapter);
        sncource.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
                TextView tv=(TextView) view;
                String str=tv.getText().toString();
                Toast.makeText(MainActivity.this,"你选的课程是"+i+"门课程:"+str,Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });

 //1.应该先创建Builder对象
                AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
                //最简单是提示框就是这四个部分,图标、标题,按钮,内容
                builder.setTitle("警告");
                builder.setIcon(R.mipmap.ic_launcher);
                // 普通对话框   builder.setMessage("是否退出系统");
                //单选对话框、多选对话框
                final String []city={"北京","上海","广州","成都"};
                builder.setSingleChoiceItems(city,0,null);
                builder.setPositiveButton("是", new DialogInterface.OnClickListener(){
                    @Override
                    public void onClick(DialogInterface dialogInterface,int i){
                        finish();
                    }
                });
                //注意构造器构造完成后,不要忘记使用create构造dialog
                builder.setNegativeButton("否",null);
                builder. setNeutralButton("忽略",null);
                AlertDialog dialog=builder.create();
                dialog.show();
            }
        });
}

 

5.弹出式的菜单--上下文菜单

如何显示弹出式的菜单--上下文菜单

1.创建菜单资源(与选项菜单实现方法相同)
2.注册要使用菜单的控件
    registerForContextMenu(控件变量名)
3.重写onCreateContextMenu方法获取上下文菜单,方法中的语句中与onCreateOptonsMene一致。

public void onCreateContextMenu(ContextMenu menu,View v,ContextMenu.ContextMenuInfo menuInfo){

super.onCreateContextMenu(menu,v,menuInfo);

getMenuInflater().inflate(R.menu.main_menu,menu);

}
4.重写onContextItemSelected方法监听选中的菜单项--任何事件都可以实现监听。
5.在控件中的事件中弹出菜单。如:

        btnok.setOnLongClickListener(new View.OnLongClickListener(){

@Override

public boolean onLongClick(View view){
view.showContextMenu();//显示菜单

return true;

}

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值