简单记录控件事件的分发机制
来源:互联网 发布:幼儿园营养配餐软件 编辑:程序博客网 时间:2024/04/29 18:15
<span style="font-size:18px;">//如下为本demo的布局文件<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello_world" /> <ImageView android:layout_below="@id/button" android:id="@+id/imageview" android:src="@drawable/ic_launcher" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <com.example.ontouch.MyLinearLayout android:layout_below="@id/imageview" android:id="@+id/MyLinearLayout" android:layout_height="wrap_content" android:layout_width="wrap_content"> <Button android:id="@+id/my_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello_world" /> </com.example.ontouch.MyLinearLayout></RelativeLayout>//简单的自定义视图ublic class MyLinearLayout extends LinearLayout{public MyLinearLayout(Context context, AttributeSet attrs) {super(context, attrs);}//若该方法返回值为true,则屏蔽了其子控件的事件触发,false则不影响@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {return true;}}//主类,事件的分发机制:由父视图传递给子视图public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Button button=(Button)this.findViewById(R.id.button);ImageView imageView=(ImageView)this.findViewById(R.id.imageview);//MyLinearLayout中的ButtonButton myButton=(Button)this.findViewById(R.id.my_button);//如果返回值为true,则表示该控件消费了该事件,不会向下传递button.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {Log.i("onTouch----->", event.getAction()+"");return false;}});//由Ontouch传递给OnClick,若Ontouch返回true,则Onclick不会响应button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Log.i("----Onclick", "excute");}});//对与默认为不可点击的控件,如果动作返回false,后面的动作将不会响应(ImageVeiw默认不可点击)//打印结果:0imageView.setOnTouchListener(new OnTouchListener() {@Overridepublic boolean onTouch(View v, MotionEvent event) {Log.i("------imageview", event.getAction()+"");return false;}});myButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Log.i("tag---------->", "MyButton");}});}//控件事件处理之前会先调用该方法,不管该方法返回false还是true,控件的事件都将屏蔽@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {Log.i("------>dispatchTouchEvent", "dispatchTouchEvent");return super.dispatchTouchEvent(ev);}}</span>
/***************************************************************************************************/
0 0
- 简单记录控件事件的分发机制
- 简单的事件分发机制
- View的事件分发机制记录
- 简单事件分发机制
- 事件分发机制简单理解
- 事件的分发机制
- Android控件之View的事件分发机制探索
- android View的点击事件分发机制的简单认知
- Android事件的分发、拦截、消费机制简单的流程
- Android的Touch事件分发机制简单分析
- android 事件分发机制详解(最简单的解释)
- Android的Touch事件分发机制简单探析
- 【自定义控件】android事件分发机制
- android事件分发机制 VIew的事件分发机制
- andorid事件分发机制 ViewGroup的事件分发机制
- ViewGroup的事件分发机制
- View 的事件分发机制
- View的事件分发机制。
- Opencore and OMX core/component interaction(一)
- java 泛型类型擦除
- 使用fcntl函数将套接字设为非阻塞式I/O
- P2P 之 UDP穿透NAT的原理与实现(附源代码)
- maven命令
- 简单记录控件事件的分发机制
- leetcode 3Sum Closest
- python optparser 输出中文的方法
- 51单片机实现LED二极管亮度阶梯变化
- organization, scheme, outline
- (csdn高校俱乐部编程挑战)2的补码
- java调优总结
- 收集好习惯<( ̄︶ ̄)↗
- 数学----有趣的扑克牌《一》