医疗项目:电话问诊,需要为电话按钮添加波纹扩散效果
来源:互联网 发布:克里斯波什 编程 编辑:程序博客网 时间:2024/05/01 14:20
package heshi.x_tools.activity;import android.app.Activity;import android.os.Bundle;import heshi.x_tools.R;import heshi.x_tools.widget.CustomWave;public class WaveActivity extends Activity { private CustomWave cuswave; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_wave); cuswave=(CustomWave)findViewById(R.id.cuswave); cuswave.start(); }}
package heshi.x_tools.widget;import android.content.Context;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Paint;import android.os.Handler;import android.os.Message;import android.util.AttributeSet;import android.view.View;import java.util.ArrayList;import java.util.Collections;import java.util.List;/** * Created by chenxiangyu on 15/12/27. */public class CustomWave extends View { private int width, height; private int centerX, centerY; private Paint paint; private int alpha = 255; private float radius = 0; private List<Wave> waves = Collections.synchronizedList(new ArrayList<Wave>()); public CustomWave(Context context) { super(context); } public CustomWave(Context context, AttributeSet attrs) { super(context, attrs); } public CustomWave(Context context, AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); } private Paint initPaint(int alpha) { Paint paint = new Paint(); paint.setAntiAlias(true); paint.setColor(Color.WHITE); paint.setAlpha(alpha); return paint; } private Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what) { case 0: changeCurrentWave(); invalidate(); handler.sendEmptyMessageDelayed(0, 50); break; case 1: Wave wave = new Wave(); wave.alpha = 255; wave.paint = initPaint(wave.alpha); waves.add(wave); } } }; @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { width = 0; height = 0; //获取width参数 int specMode = MeasureSpec.getMode(widthMeasureSpec); //获取height参数 int specSize = MeasureSpec.getSize(widthMeasureSpec); switch (specMode) { case MeasureSpec.EXACTLY: width = getPaddingLeft() + getPaddingRight() + specSize; break; case MeasureSpec.AT_MOST: width = getPaddingLeft() + getPaddingRight(); break; default: break; } specMode = MeasureSpec.getMode(heightMeasureSpec); specSize = MeasureSpec.getSize(heightMeasureSpec); switch (specMode) { case MeasureSpec.EXACTLY: height = getPaddingTop() + getPaddingBottom() + specSize; break; case View.MeasureSpec.AT_MOST://针对的是warp——content height = getPaddingTop() + getPaddingBottom(); break; default: break; } centerX = width / 2; centerY = height / 2; setMeasuredDimension(width, height); } @Override protected void onDraw(Canvas canvas) { for (Wave wave : waves) { canvas.drawCircle(centerX, centerY, wave.radius, wave.paint); } } private class Wave { //圆半径 float radius; //圆透明度 int alpha; //画圆的画笔 Paint paint; } private void changeCurrentWave() { for (Wave wave : waves) { if (wave.alpha <= 0) { wave.alpha = 255; wave.radius = 0; wave.paint = null; } wave.alpha -= 5; wave.radius += 5; wave.paint = initPaint(wave.alpha); } } public void start() { Wave wave = new Wave(); wave.alpha = 255; wave.paint = initPaint(wave.alpha); waves.add(wave); handler.sendEmptyMessage(0); handler.sendEmptyMessageDelayed(1, 1000); }}
<FrameLayout 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:background="@drawable/bg" tools:context="heshi.x_tools.activity.WaveActivity"> <heshi.x_tools.widget.CustomWave android:id="@+id/cuswave" android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:layout_width="60dp" android:layout_height="60dp" android:layout_gravity="center" android:background="@drawable/circle_white" /> <ImageView android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center" android:background="@drawable/phone_red" /></FrameLayout>
0 0
- 医疗项目:电话问诊,需要为电话按钮添加波纹扩散效果
- GE医疗电话面试
- 自定义Drawable 实现波纹扩散效果
- Android实现控件点击波纹扩散效果
- 【实验】电话拨号、动态添加按钮
- css3按钮波纹效果
- 按钮点击效果(波纹)
- 为Cisco IP电话添加自定义铃声
- 按键为波纹效果
- 按钮点击水波纹效果
- 电话
- 电话
- 电话
- 电话
- 电话
- 电话
- 电话
- 实现支付宝的咻一咻波纹扩散效果
- linux 上安装oracle
- Linux_Package_Management
- hadoop集群默认配置和常用配置
- Javascript 正则表达式
- ASP.NET求职总结
- 医疗项目:电话问诊,需要为电话按钮添加波纹扩散效果
- JS移动客户端--触屏滑动事件
- 民国最著名的四篇演讲
- ICloudOperator 执行过程分析
- UITextField属性大全
- Girls' research
- 报错:LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- FTP服务器及DNS服务器管理
- 辐射定标、辐射校正、大气校正、正射校正等相关概念