Android---26---跟随手指移动的小球

通过回调实现跟随手指移动的小球:

那么什么是回调,这里的回调是指Android中两种事件处理的方式。一种是通过监听器来实现的监听机制,一种是通过自身的方法实现的回调机制。

基于监听的处理机制,主要涉及三类对象:

EventSource(事件源):通常是各个组件;

Event(事件):对组件的操作;

EventListener(事件监听器):做出响应。

所谓事件监听器其实就是实现了特定接口的Java类的实例。

在程序中实现事件监听器,有四种形式:

1.内部类形式

2.外部类形式

3.Activity本身作为事件监听器

4.匿名内部类

一般来说,后两种较常用。

基于回调的监听机制:

事件源与事件监听器是统一的,或者说事件监听器消失了。

基于回调的事件处理可通过自定义View来实现。

两者有什么不同?

事件监听机制是一种委托式的事件处理,事件源与事件监听器不是统一的,或者说是分开的,不是一起的。

而基于回调的事件事件处理机制,事件源与事件监听器是一起的,不用通过监听器,自己就能实现。

基于回调的事件传播:

几乎所有的基于回调的事件处理方法都有一个boolean类型的返回值,该值用于标识该处理方法是否能完全处理该事件。

返回true,表明该处理方法已完全处理该事件,该事件不会传播出去

返回false,表明该处理方法没有完全处理该事件,该事件会传播出去。

对于基于回调的事件传播而言,某组件上所发生的事情不仅激发该组件上的回调方法,也会触发该组件所在Activity的回调方法----只要事件能传播到该Activity。

实例:

跟随手指移动的小球:自定义VIew

MainActivity.java:

package com.example.ontoucheventdemo;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
}

DrawViewDemo.java:

package com.example.ontoucheventdemo;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;

public class DrawViewDemo extends View{
	public float currentX = 40;
	public float currentY = 50;
	//定义。创建画笔
	Paint p = new Paint();

	public DrawViewDemo(Context context,AttributeSet set) {
		// TODO Auto-generated constructor stub
		super(context,set);
	}

	@Override
	protected void onDraw(Canvas canvas) {
		// TODO Auto-generated method stub
		super.onDraw(canvas);
		//设置画笔的颜色
		p.setColor(Color.RED);
		//绘制一个小球
		//参数分别是:圆心坐标,半径 ,所使用的画笔
		canvas.drawCircle(currentX, currentY, 15, p);

	}

	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		//修改当前的坐标
		this.currentX = event.getX();
		this.currentY = event.getY();
		//重绘小球
		this.invalidate();

		return true;
	}
}

activity_main.xml:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical"
    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="com.example.ontoucheventdemo.MainActivity" >

    <com.example.ontoucheventdemo.DrawViewDemo
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        />

</LinearLayout>
时间: 2024-08-30 12:59:26

Android---26---跟随手指移动的小球的相关文章

android脚步---跟随手指动的小球

这次的学习主要是在包里面除自动生成的mainactivity.java之外,再新建一个class, DrawView,在mainactivity里面调用DrawView. 在DrawView里面主要是重写onDraw方法,----该方法负责在该组件指定位置绘制一个小球. package org.crazyit.helloworld; import android.content.Context; import android.graphics.Canvas; import android.gra

Android开发——跟随手指的小球实现

今天要实现的是一个跟随手指的小球,说白了就是让小球按着手指滑动的轨迹运动,实现起来还是比较容易的. 用到的类是drawView,我们先自定义一个DrawView组件. DrawView.java: package cn.csdn.android.view; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Pa

自定义View,随着手指运动的小球

这个实例是自定的view的初步介绍,要设计的是一个随着手指运动的小球.原理是随时获取手指的坐标,然后在这个坐标上面实时改变自定义view的坐标.这个view仅仅是画了一个圆形而已. 自定义的view DrawView.java package com.kale.drawview; import android.annotation.SuppressLint; import android.content.Context; import android.graphics.Canvas; impor

移动端H5单页面跟随手指滑动切换组件PageSlider

转载地址:http://www.ifrans.cn/pageslider/?replytocom=38914 PageSlider PageSlider 是一个基于zepto.js用于实现H5单页面跟随手指上下滑动切换的组件,支持通过transform3D启动GPU加速,目前仅支持移动端touch设备. <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name=&

滑动跟随手指横向滑动

浪去项目有个头图滑动横向滑动的需求,故写次demo <!DOCTYPE html> <html> <head> <title>滑动跟随手指横向滑动</title> <style type="text/css"> .spirit { /* 方块的class名称*/ position: absolute; width: 50px; height: 50px; background-color: red; } </

Android应用小实例--跟随手指的小球

实现效果图: 实现方式: 继承View类自己重绘一个圆,然后将这个自定义的继承于View类的加入到当前的Activity并且为这个自定义的View控件添加一个onTouchLitener事件 自定义组件继承于View类: [java] view plain copy print ? package com.jiahui.draw; import android.content.Context; import android.graphics.Canvas; import android.grap

跟随手指的小球

     Crize_demo\draw_demo\src\main\java\com\ly\draw_demo\DrawView.java 1 import android.content.Context; 2 import android.graphics.Canvas; 3 import android.graphics.Color; 4 import android.graphics.Paint; 5 import android.view.View; 6 7 public class

Android中view的简单应用---随手指移动的小球

public class DrawView extends View{     public  float currentX=40;     public float currentY=50;     public DrawView(Context context){         super(context);     }     //重写ondraw,通过canvas绘画     protected void onDraw(Canvas canvas){         Paint pai

第二章实例:动态生成View控件例子---小球跟随手指滑动

package mydefault.packge; import android.app.Activity; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.os.Bundle; import androi