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

这个实例是自定的view的初步介绍,要设计的是一个随着手指运动的小球。原理是随时获取手指的坐标,然后在这个坐标上面实时改变自定义view的坐标。这个view仅仅是画了一个圆形而已。

自定义的view

DrawView.java

package com.kale.drawview;

import android.annotation.SuppressLint;
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 DrawView extends View{

    public float currentX = 60;
    public float currentY = 60;

    //定义,创建画笔
    Paint paint = new Paint();
    public DrawView (Context context) {
        super(context);
    }

    public DrawView(Context context,AttributeSet set) {
        super(context,set);
    }

    @Override
    public void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        //设置画笔颜色
        paint.setColor(Color.RED);
        //绘制一个小圆
        canvas.drawCircle(currentX, currentY, 50, paint);
    }

    // 为该组件的触碰时间2重写处理的方法
    @Override
    public boolean onTouchEvent(MotionEvent event) {
        // 修改坐标
        currentX = event.getX();
        currentY = event.getY();

        // 通知组件,重新绘制自己
        invalidate();
        // 返回true表明该方法已经处理该事件
        return true;
    }

}

布局文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/root_relativeLayout_id"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="${relativePackage}.${activityClass}" >

    <com.kale.drawview.DrawView
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

当然,我们也可以不用布局文件,直接在代码中把自定义控件放入layout中

package com.kale.drawview;

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

public class MainActivity extends Activity {

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

/*        RelativeLayout root  = (RelativeLayout)findViewById(R.id.root_relativeLayout_id);

        final DrawView drawView = new DrawView(this);
        //設置組件的最大寬度
        drawView.setMinimumHeight(300);
        drawView.setMinimumWidth(500);
        root.addView(drawView);*/
    }
}

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

时间: 2024-10-10 13:44:46

自定义View,随着手指运动的小球的相关文章

自定义View实现跟随手指的小球

package com.pingyijinren.test; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.util.AttributeSet; import android.view.View; /** * Created by Administrator on

【Android自定义View实战】之仿QQ运动步数圆弧及动画,Dylan计步中的控件StepArcView

转载请注明出处:http://blog.csdn.net/linglongxin24/article/details/52936609[DylanAndroid的csdn博客] 在之前的Android超精准计步器开发-Dylan计步中的首页用到了一个自定义控件,和QQ运动的界面有点类似,还有动画效果,下面就来讲一下这个View是如何绘制的. 1.先看效果图 2.效果图分析 功能说明:黄色的代表用户设置的总计划锻炼步数,红色的代表用户当前所走的步数. 初步分析:完全自定义View重写onDraw(

Android自定义View实现仿QQ实现运动步数效果

效果图: 1.attrs.xml中 <declare-styleable name="QQStepView"> <attr name="outerColor" format="color"/> <attr name="innerColor" format="color"/> <attr name="borderWidth" format=&quo

自定义View之案列篇(三):仿QQ小红点

光棍节快到了,提前祝愿广大的单身猿猴,早日脱单,尽快找到另一半. 一直觉得 QQ 的小红点非常具有创新,新颖.要是自己也能实现类似的效果,那怎一个爽字了得. 先来看看它的最终效果: 效果图具有哪些效果: 在拉伸范围内的拉伸效果 未拉出拉伸范围释放后的效果 拉出拉伸范围再拉回的释放后的效果 拉出拉伸范围释放后的爆炸效果 涉及的相关知识点: onLayout 视图位置 saveLayer 图层相关知识 Path 的贝赛尔曲线 手势监听 ValueAnimator 属性动画 一.拉伸效果 我们先来讲解

自定义View系列教程01--常用工具介绍

在自定义View的时候,常常会用到一些Android系统提供的工具.这些工具封装了我们经常会用到的方法,比如拖拽View,计算滑动速度,View的滚动,手势处理等等.如果我们自己去实现这些方法会比较繁琐,而且容易出一些bug.所以,作为自定义View系列教程的开端,先介绍一下这些常用的工具,以便在后续的学习和工作中使用. Configuration ViewConfiguration GestureDetector VelocityTracker Scroller ViewDragHelper

Android应用开发之自定义View触摸相关工具类全解

背景 最近有些乱,各种事情,各种交叉.好在还有一点上进心,于是继续将自定义这个系列的核心知识再梳理一下吧.关于自定义控件前面博文说过了,这里不会教你拿来主义,只授之以渔,如果你喜欢拿来主义,不好意思,请绕行,如果你喜欢得渔,那请继续. 前面我们已经叙述过了几篇关于自定义View涉及的东西,大家可以自己回过头去看我之前的博客,譬如事件处理.坐标系.工具类等.下面我们还是继续补充一些常用的自定义控件工具类. [工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请

自定义View实现钟摆效果进度条PendulumView

在网上看到了一个IOS组件PendulumView,实现了钟摆的动画效果.由于原生的进度条确实是不好看,所以想可以自定义View实现这样的效果,以后也可以用于加载页面的进度条. 废话不多说,先上效果图 底部黑边是录制时不小心录上的,可以忽略. 既然是自定义View我们就按标准的流程来,第一步,自定义属性自定义属性 建立属性文件 在Android项目的res->values目录下新建一个attrs.xml文件,文件内容如下: [html] view plain copy <?xml versio

Android_自定义View之跳动的loading

这篇文章记录一下Android自定义UI的知识,一个小小的跳动的loading,特别感谢Nil的指点-废话不多,先来效果 SoHOT链接和star地址:SoHOT源码地址,在文章最后最后有github开源地址,别错过 如果您还没有去给SoHOT一颗star而直接看这个项目,那简直是有点损失,希望您点上面的链接,去star和下载体验一下SoHoT,捡起那个大西瓜再来捡这个小芝麻项目,你懂的!! 凑乎看吧,录制的效果不如真机上平滑-凑乎看吧. 1,自定义View的自定义属性提取 2,View中动画的

自定义View之大风车系列demo(一)

每次写博客最讨厌写博客的开头,不知道该写些什么,现在也是,感觉跟写八百字作文似的.之所以会写这一系列的demo是因为前天看网上的一个图片转圈的源码的时候 突发奇想要不要自己也弄个耍耍,顺便学习下view的相关知识!说干就干,当然自己写的时候也不免参照写别人得到代码,毕竟自定义view与我的水平来说确实具有挑战性,通过完成这一些列的小demo确实收获颇多,虽然还有些许在我看来更牛逼的功能自己没法实现,但自己的目的也算达到了.先啰嗦了这么多,先说说大风车系列小demo的总体概况:一共五个版本,这也意