事件分發 -----控制字型大小
阿新 • • 發佈:2018-11-21
滑鼠向左 字型縮小
滑鼠向右 字型放大
MainActivity
import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import android.view.MotionEvent; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; /** * 事件有三個方法 * 1:事件分發 dispatchTouchEvent 2:事件攔截 onInterceptTouchEvent 3:事件響應 onTouchEvent * <p> * Activity 有兩個 1:事件分發,2:事件響應 * View和ViewGroup 全部擁有 * <p> * 從一個按鈕的點選事件進去執行流程 * <p> * 1:先走Activity 2:ViewGroup 3:具體到點的那個控制元件 */ public class MainActivity extends AppCompatActivity { private float x1, x2; private int mSize; private Button Click_Btn; private ImageView Image_View; private TextView tv_name; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { Click_Btn = (Button) findViewById(R.id.Click_Btn); Image_View = (ImageView) findViewById(R.id.Image_View); tv_name = (TextView) findViewById(R.id.tv_name); Click_Btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Log.e("onClick", "被點選了"); } }); Click_Btn.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.e("onTouch", event.getAction() + "動作"); return false; } }); //直接通過方法讓按鈕直接被執行 Click_Btn.performClick(); Image_View.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.e("Image", event.getAction() + ""); return false; } }); } //事件分發 true代表這個事件被消費掉過後就不能往下執行了 false沒有被消費會一直往下邊傳遞 @Override public boolean dispatchTouchEvent(MotionEvent ev) { return super.dispatchTouchEvent(ev); } @Override public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: x1 = event.getX(); break; case MotionEvent.ACTION_UP: x2 = event.getX(); if (x2 - x1 > 0) { mSize += 5; tv_name.setTextSize(mSize); } else { mSize -= 5; tv_name.setTextSize(mSize); } break; } return super.onTouchEvent(event); } }
佈局檔案
<?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/Click_Btn" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Click" /> <ImageView android:id="@+id/Image_View" android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/ic_launcher" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/tv_name" android:layout_gravity="center" android:textSize="20dp" android:text="字型"/> </LinearLayout>