响应点击事件,我们一般通过setOnClickListener来实现,但有时我们需要响应触摸后手指松开的事件,
可以通过OnTouchListener 来实现
以下代码实现 触摸一个Layout时改变Layout的背景色为白色,离开时恢复原来的背景色
java代码
import android.app.ActionBar;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
import android.os.StrictMode;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.os.Handler;
import android.os.Message;
import java.io.IOException;
public class SelfInfoActivity extends ActionBarActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_myinfo);
View baseinfo = (RelativeLayout)findViewById(R.id.lo_baseinfo);
/*
baseinfo.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
v.setBackgroundColor(Color.WHITE);
}
});*/
baseinfo.setBackgroundColor(Color.GRAY);
final TextView tv_baseinfo = (TextView)findViewById(R.id.baseinfo);
baseinfo.setOnTouchListener(
new View.OnTouchListener() {
public boolean onTouch(View v, MotionEvent e) {
switch(e.getAction()) {
case MotionEvent.ACTION_DOWN:
v.setBackgroundColor(Color.WHITE);
tv_baseinfo.setText("action down");
break;
case MotionEvent.ACTION_UP:
v.setBackgroundColor(Color.GRAY);
tv_baseinfo.setText("action up");
break;
}
return true;
}
}
);
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical">
<RelativeLayout android:id="@+id/lo_baseinfo"
android:layout_width="fill_parent"
android:layout_height="50dp"
android:background="@color/blue">
</RelativeLayout>
<TextView
android:id="@+id/baseinfo"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="hello"
android:background="@color/black"
/>
</LinearLayout>