按键、长按、焦点改变、触摸事件的实现

来源:互联网 发布:冯远征演技知乎 编辑:程序博客网 时间:2024/05/14 01:06

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical" >    <!-- 按键事件 开始 -->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:orientation="horizontal" >        <EditText            android:id="@+id/input"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:descendantFocusability="blocksDescendants"            android:hint="@string/input" />        <ImageView            android:id="@+id/img"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:contentDescription="@string/hello_world"            android:paddingTop="10dp" />    </LinearLayout>    <!-- 按键事件 结束 -->    <!-- 焦点改变事件 开始 -->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"         android:orientation="horizontal">        <EditText            android:id="@+id/username"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:descendantFocusability="blocksDescendants"            android:hint="@string/username" />        <TextView            android:id="@+id/textname"            android:layout_width="wrap_content"            android:layout_height="wrap_content"             android:textColor="@android:color/background_dark"/>    </LinearLayout>    <!-- 焦点改变事件 结束 -->    <!-- 触摸事件 开始 -->    <LinearLayout        android:layout_width="match_parent"        android:layout_height="wrap_content"         android:orientation="vertical">        <TextView            android:id="@+id/img1Info"            android:layout_width="wrap_content"            android:layout_height="wrap_content"             android:textColor="@android:color/background_dark"            android:textSize="20sp"/>        <ImageView            android:id="@+id/img1"            android:layout_width="wrap_content"            android:layout_height="wrap_content"            android:contentDescription="@string/hello_world"           android:src="@drawable/aa"/>    </LinearLayout>    <!-- 触摸事件 结束 --></LinearLayout>

MainActivity.java

import android.app.Activity;import android.os.Bundle;import android.view.KeyEvent;import android.view.MotionEvent;import android.view.View;import android.view.View.OnFocusChangeListener;import android.view.View.OnKeyListener;import android.view.View.OnLongClickListener;import android.view.View.OnTouchListener;import android.view.Window;import android.widget.EditText;import android.widget.ImageView;import android.widget.TextView;import android.widget.Toast;public class MainActivity extends Activity{    private EditText input;    private ImageView img;    private EditText username;    private TextView textname;    private ImageView img1;    private TextView img1Info;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        //去除窗口标题        requestWindowFeature(Window.FEATURE_NO_TITLE);        setContentView(R.layout.activity_main);        //按键事件开始        input=(EditText) findViewById(R.id.input);        img=(ImageView) findViewById(R.id.img);        input.setOnKeyListener(new MyonkeyListener());        //按键事件结束        //长按事件        img.setOnLongClickListener(new MyonLongListener());        //焦点改变事件开始        username=(EditText) findViewById(R.id.username);        textname=(TextView) findViewById(R.id.textname);        username.setOnFocusChangeListener(new MyonFocusChangeListener());        //焦点改变事件结束        //触摸事件 开始        img1=(ImageView) findViewById(R.id.img1);        img1Info=(TextView) findViewById(R.id.img1Info);        img1.setOnTouchListener(new MyonTouchListener());        //触摸事件 结束    }    /**     * 按键事件     * @author Administrator     *     */    private class MyonkeyListener implements OnKeyListener{        @Override        public boolean onKey(View v, int keyCode, KeyEvent event) {            System.out.println("keyCode:"+keyCode);            switch (event.getAction()) {            //键盘松开            case KeyEvent.ACTION_UP:                String info=input.getText().toString();                System.out.println("info:"+info);                //规定输入的样式                if (info.matches("\\w+@\\w+\\.\\w+")) {                    img.setImageResource(R.drawable.yes);                }else {                    img.setImageResource(R.drawable.no);                }                break;            //按下时            case KeyEvent.ACTION_DOWN:                break;            default:                break;            }            return false;        }    }    /**     * 长按事件     */    private class MyonLongListener implements OnLongClickListener{        @Override        public boolean onLongClick(View v) {            Toast.makeText(MainActivity.this, "长按图片", Toast.LENGTH_SHORT).show();            return false;        }    }    /**     * 焦点改变事件     */    private class MyonFocusChangeListener implements OnFocusChangeListener{        @Override        public void onFocusChange(View v, boolean hasFocus) {            if (v.getId()==username.getId()) {                if (hasFocus) {                    Toast.makeText(MainActivity.this, "获得焦点", Toast.LENGTH_SHORT).show();                }else{                    if (username.getText().toString().trim().length()==0) {                        textname.setText("请输入用户名!");                    }else{                        textname.setText("您输入的用户名:"+username.getText().toString().trim());                    }                }            }        }    }    /**     * 触摸事件     */    private class MyonTouchListener implements OnTouchListener{        @Override        public boolean onTouch(View v, MotionEvent event) {            //获得图片img1的坐标            img1Info.setText("x="+event.getX()+",y="+event.getY());            return false;        }    }}

strings.xml

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="input">请输入邮箱地址</string>    <string name="username">请输入用户名</string></resources>
0 0
原创粉丝点击