Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环

之前在三星手机上看到点击屏幕后出现水波的特效,所以尝试着写了个类似的效果

实现自定义一个View,并实现构造方法

public class MyView extends View {

public MyView(Context context) {

super(context);

// TODO Auto-generated constructor stub

}

public MyView(Context context, AttributeSet attrs) {

super(context, attrs);

// TODO Auto-generated constructor stub

}

}

如果要绘制圆环,则需要设置圆环的半径、描边宽度(如果弄填充满的则不需要)、X和Y的坐标,因为点击屏幕出现圆环后还需要消失,所以还要加上透明度

那么我们新建一个Bean,去实现这些

public class MyBean {

int alpha; // 透明度

int X; // X坐标

int Y; // Y坐标

float width; // 描边宽度

float radius; // 半径

Paint paint; // 画笔

}

接下来就是获取点击屏幕后的事件,思路很明确,点击屏幕后,首先设置绘制的圆的半径为0,透明度为最大值255,描边宽度这里按个人喜好随意设置

@Override

public boolean onTouchEvent(MotionEvent event) {

super.onTouchEvent(event);

switch (event.getAction()) {

case MotionEvent.ACTION_DOWN:

// 点击屏幕后 半径设为0,alpha设置为255

MyBean bean = new MyBean();

bean.radius = 0; // 点击后 半径先设为0

bean.alpha = MaxAlpha; // alpha设为最大值 255

bean.width = bean.radius / 8; // 描边宽度 这个随意

bean.X = (int) event.getX(); // 所绘制的圆的X坐标

bean.Y = (int) event.getY(); // 所绘制的圆的Y坐标

bean.paint = initPaint(bean.alpha, bean.width);

break;

}

return true;

}

设置完属性后,交给handler去绘制界面,每过X毫秒后,绘制的圆的半径+N,透明度-M

bean.radius += 5;// 半径每次+5

bean.alpha -= 10;// 透明度每次减10

if (bean.alpha < 0) {

// 透明度小雨0的时候 赋为0

bean.alpha = 0;

}

bean.width = bean.radius / 8; // 描边宽度设置为半径的1/4

bean.paint.setAlpha(bean.alpha);

bean.paint.setStrokeWidth(bean.width);

至此,我们所有的主要代码已实现

附Demo地址:http://download.csdn.net/detail/qq_18612815/9511652



时间: 2024-07-28 21:35:05

Android自定义控件(特效一) 点击屏幕,根据所点击的位置绘制圆环的相关文章

android中关于点击屏幕,实现破碎的效果的实现

昨天网上,跟哥们讨论起点击屏幕破碎的效果,今天索性就拿出时间整理一下,很简单奥, 基本思路: 1. 自定义一个View,用于展示这个破碎的的效果 2.在activity中加入这个view,通过setContentView(view); 3.注意要把activity的theme设置成 android:theme="@android:style/Theme.Translucent.NoTitleBar"  ,这样玩起来会更有效果. 首先重写一个view,我们就叫CustomeView吧.自

Android自定义控件:Android L控件点击水波纹的实现(源码 + Demo)

实现思路来自singwhatiwanna http://blog.csdn.net/singwhatiwanna/article/details/42614953 Demo: 一.控件的流程: 大致上如下,实际是有些偏差的大家可以自己画画 RevealLayout()--->init()--->onMeasure()--->onLayout()--->onDraw()--->dispatchTouchEvent()--->getTargetView()--->is

Android通过代码模拟物理、屏幕点击事件

本文讲的是通过使用代码,可以控制手机的屏幕和物理按键,也就是说不只是在某一个APP里去操作,而是整个手机系统. getevent/sendevent getevent&sendevent 是android系统下的一个工具,可以模拟多种按键和触屏操作,产生的是raw event,raw event经过event hub处理产生最终的gesture事件.getevent用于获取当前系统input设备的一些参数和实时事件的数据:sendevent用于发送input事件,这俩命令的作用就是相当于解放了手

Android自定义控件系列八:详解onMeasure()(二)--利用onMeasure测量来实现图片拉伸永不变形,解决屏幕适配问题

上一篇文章详细讲解了一下onMeasure/measure方法在Android自定义控件时的原理和作用,参看博文:Android自定义控件系列七:详解onMeasure()方法中如何测量一个控件尺寸(一),今天就来真正实践一下,让这两个方法大显神威来帮我们搞定图片的屏幕适配问题. 请尊重原创劳动成果,转载请注明出处:http://blog.csdn.net/cyp331203/article/details/45038329,非允许请勿用于商业或盈利用途,违者必究. 使用ImageView会遇到

android 点击屏幕关闭 软键盘

//点击屏幕 关闭输入弹出框 @Override public boolean onTouchEvent(MotionEvent event) { InputMethodManager im = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); im.hideSoftInputFromWindow(getCurrentFocus().getApplicationWindowToken(), InputMetho

Android 自定义控件开发入门(一)

作为一个有创意的开发者,或者软件对UI设计的要求比较高,你经常会遇到安卓自带的控件无法满足你的需求的情况,这种时候,我们只能去自己去实现适合项目的控件.同时,安卓也允许你去继承已经存在的控件或者实现你自己的控件以便优化界面和创造更加丰富的用户体验. 那么怎样来创建一个新的控件呢? 这得看需求是怎样的了. 1.需要在原生控件的基本功能上进行扩展,这个时候你只需要继承并对控件进行扩展.通过重写它的事件,onDraw ,但是始终都保持都父类方法的调用.如从已有的高级控件上继承,例如继承一个TextVi

android 自定义控件---圆形方向盘

在做Android平台开发的时候,经常会遇到安卓原生控件无法满足需求的情况,安卓允许开发者去继承已经存在的控件或者实现你自己的控件. 先来看一下效果图 采用直接集成View类,重写onDrow方法绘制. 下面附上主要代码. 1 新建一个类CircleView 继承自View 1 package com.lennon.view; 2 3 import android.content.Context; 4 import android.graphics.Canvas; 5 import androi

Android笔记——Android自定义控件

目录: 1.自定义控件概述 01_什么是自定义控件 Android系统中,继承Android系统自带的View或者ViewGroup控件或者系统自带的控件,并在这基础上增加或者重新组合成我们想要的效果. 02_为什么用自定义控件 系统控件无法满足需求时,需要自定义控件. 系统的控件在不同手机长得不一样,我们希望在不同手机实现相同的效果: 有些手机上的控件长得不好看,希望好看一些. 系统控件的功能有限,需要在基础上增加功能. 03_怎么用自定义控件-三种方式 1.使用系统控件,重新组合,实现自定义

Android自定义控件——开源组件SlidingMenu的项目集成

转载请注明出处:http://blog.csdn.net/allen315410/article/details/39611355  在实际项目开发中,定制一个菜单,能让用户得到更好的用户体验,诚然菜单的样式各种各样,但是有一种菜单--滑动菜单,是被众多应用广泛使用的.关于这种滑动菜单的实现,我在前面的博文中也介绍了如何自定义去实现,请参考Android自定义控件--侧滑菜单,这篇博文描述的是如何从无到有创建一个侧滑菜单的控件,里面的代码不多,但是处理的逻辑和各种效果比较复杂,如果稍有不慎,这种