iis服务器助手广告广告
返回顶部
首页 > 资讯 > 移动开发 >Android实现渐变色的圆弧虚线效果
  • 829
分享到

Android实现渐变色的圆弧虚线效果

渐变色Android 2022-06-06 07:06:27 829人浏览 安东尼
摘要

首先来看看效果图: 1,SweepGradient(梯度渲染) public SweepGradient (float cx, float cy, int[] colo

首先来看看效果图:


1,SweepGradient(梯度渲染)


public SweepGradient (float cx, float cy, int[] colors, float[] positions)

扫描渲染,就是以某个点位中心旋转一周所形成的效果!参数依次是:

      cx:扫描的中心x坐标

      cy:扫描的中心y坐标

      colors:梯度渐变的颜色数组

      positions:指定颜色数组的相对位置


public static final int[] SWEEP_GRADIENT_COLORS = new int[]{Color.GREEN, Color.GREEN, Color.BLUE, Color.RED, Color.RED};
mColorShader = new SweepGradient(radius, radius,SWEEP_GRADIENT_COLORS,null);

效果图:


SweepGradient

2,DashPathEffect(Path的线段虚线化)


DashPathEffect(float[] intervals, float phase)

      intervals:为虚线的ON和OFF的数组,数组中元素数目需要 >= 2

      phase:为绘制时的偏移量


//计算路径的长度
PathMeasure pathMeasure = new PathMeasure(mPath, false);
float length = pathMeasure.getLength();
float step = length / 60;
dashPathEffect = new DashPathEffect(new float[]{step / 3, step * 2 / 3}, 0);

效果图:


DashPathEffect

3,下面是全部的代码:


package com.example.yyw.xfermodedemo;
import Android.animation.ValueAnimator;
import android.content.Context;
import android.graphics.canvas;
import android.graphics.Color;
import android.graphics.DashPathEffect;
import android.graphics.Paint;
import android.graphics.Path;
import android.graphics.PathMeasure;
import android.graphics.RectF;
import android.graphics.SweepGradient;
import android.util.AttributeSet;
import android.view.View;

public class OilTableLine extends View {
 public static final int[] SWEEP_GRADIENT_COLORS = new int[]{Color.GREEN, Color.GREEN, Color.BLUE, Color.RED, Color.RED};
 private int tableWidth = 50;
 private Paint mPaint;
 private Path mPath;
 private RectF mTableRectF;
 //把路径分成虚线段的
 private DashPathEffect dashPathEffect;
 //给路径上色
 private SweepGradient mColorShader;
 //指针的路径
 private Path mPointerPath;
 private float mCurrentDegree = 60;
 public OilTableLine(Context context, AttributeSet attrs) {
  super(context, attrs);
  mPaint = new Paint();
  mPaint.setAntiAlias(true);
  mPaint.setDither(true);
  mPaint.setColor(Color.BLACK);
  mPath = new Path();
  mPointerPath = new Path();
  startAnimator();
 }
 @Override
 protected void onSizeChanged(int w, int h, int oldw, int oldh) {
  super.onSizeChanged(w, h, oldw, oldh);
  float size = Math.min(w, h) - tableWidth * 2;
  //油表的位置方框
  mTableRectF = new RectF(0, 0, size, size);
  mPath.reset();
  //在油表路径中增加一个从起始弧度
  mPath.addArc(mTableRectF, 60, 240);
  //计算路径的长度
  PathMeasure pathMeasure = new PathMeasure(mPath, false);
  float length = pathMeasure.getLength();
  float step = length / 60;
  dashPathEffect = new DashPathEffect(new float[]{step / 3, step * 2 / 3}, 0);
  float radius = size / 2;
  mColorShader = new SweepGradient(radius, radius,SWEEP_GRADIENT_COLORS,null);
  //设置指针的路径位置
  mPointerPath.reset();
  mPointerPath.moveTo(radius, radius - 20);
  mPointerPath.lineTo(radius, radius + 20);
  mPointerPath.lineTo(radius * 2 - tableWidth, radius);
  mPointerPath.close();
 }
 @Override
 protected void onDraw(Canvas canvas) {
  super.onDraw(canvas);
  float dx = (getWidth() - mTableRectF.width()) / 2;
  float dy = (getHeight() - mTableRectF.height()) / 2;
  //把油表的方框平移到正中间
  canvas.translate(dx, dy);
  canvas.save();
  //旋转画布
  canvas.rotate(90, mTableRectF.width() / 2, mTableRectF.height() / 2);
  mPaint.setStyle(Paint.Style.STROKE);
  mPaint.setStrokeWidth(tableWidth);
  mPaint.setPathEffect(dashPathEffect);
  mPaint.setShader(mColorShader);
  canvas.drawPath(mPath, mPaint);
  canvas.restore();
  //还原画笔
  mPaint.setPathEffect(null);
  mPaint.setShader(null);
  mPaint.setStyle(Paint.Style.FILL);
  mPaint.setStrokeWidth(tableWidth / 10);
  canvas.save();
  canvas.rotate(150 + mCurrentDegree, mTableRectF.width() / 2, mTableRectF.height() / 2);
  canvas.drawPath(mPointerPath, mPaint);
  canvas.restore();
 }
 public void startAnimator() {
  ValueAnimator animator = ValueAnimator.ofFloat(0, 240);
  animator.setDuration(40000);
  animator.setRepeatCount(ValueAnimator.INFINITE);
  animator.setRepeatMode(ValueAnimator.RESTART);
  animator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
   @Override
   public void onAnimationUpdate(ValueAnimator animation) {
    mCurrentDegree = (int) (0 + (Float) animation.getAnimatedValue());
    invalidate();
   }
  });
  animator.start();
 }
}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流。

您可能感兴趣的文章:android自定义进度条渐变色View的实例代码Android实现TextView字符串关键字变色的方法android表格效果之ListView隔行变色实现代码Android 自定义圆形带刻度渐变色的进度条样式实例代码Android App仿微信界面切换时Tab图标变色效果的制作方法Android中button点击后字体的变色效果Android自定义带水滴的进度条样式(带渐变色效果)Android实现歌词渐变色和进度的效果android搜索框上下滑动变色效果android自定义view仿今日头条加载文字变色效果


--结束END--

本文标题: Android实现渐变色的圆弧虚线效果

本文链接: https://www.lsjlt.com/news/23575.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Android实现颜色渐变动画效果
    目录前言一、Android中插值器TypeEvaluator二、案例效果实现1.利用Android自带的颜色插值器ArgbEvaluator2.看看Android自带颜色插值器Arg...
    99+
    2024-04-02
  • Android Textview实现颜色渐变滚动效果
    本文实例为大家分享了Android颜色渐变滚动展示的具体代码,供大家参考,具体内容如下public class FlashTextView extends android.support.v7.widget.AppCompatTextVie...
    99+
    2023-05-30
    android textview 渐变
  • Android实现流动的渐变色边框效果
    目录前言实现思路总结前言 记得在介绍 motion_toast 一篇的时候,开篇有一张动图,边框是渐变色而且感觉是流动的。这个动效挺有趣的,当时也有人问怎么实现,经过上一篇《让你的聊...
    99+
    2024-04-02
  • Android怎么实现颜色渐变动画效果
    本篇内容主要讲解“Android怎么实现颜色渐变动画效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Android怎么实现颜色渐变动画效果”吧!效果图:一、Android中插值器TypeEva...
    99+
    2023-06-30
  • android颜色渐变动画效果怎么实现
    在Android中,你可以使用ValueAnimator和ArgbEvaluator类来实现颜色渐变动画效果。下面是一个简单的示例代...
    99+
    2023-08-18
    android
  • Android如何实现渐变色水波纹效果
    这篇文章主要介绍了Android如何实现渐变色水波纹效果,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。项目中使用到的效果,效果图如下:代码实现:public cla...
    99+
    2023-06-21
  • css如何实现背景颜色线性渐变和径向渐变效果
    这篇文章主要介绍了css如何实现背景颜色线性渐变和径向渐变效果的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇css如何实现背景颜色线性渐变和径向渐变效果文章都会有所收获,下面我们一起来看看吧。一、线性渐变(li...
    99+
    2023-07-05
  • Android编程实现带渐变效果的圆角矩形示例
    本文实例讲述了Android编程实现带渐变效果的圆角矩形。分享给大家供大家参考,具体如下:public class RoundRectsActivity extends Activity { @Override protected vo...
    99+
    2023-05-30
    android 渐变 圆角矩形
  • CSS怎么实现颜色渐变效果
    这篇文章主要介绍“CSS怎么实现颜色渐变效果”,在日常操作中,相信很多人在CSS怎么实现颜色渐变效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS怎么实现颜色渐变效果”...
    99+
    2024-04-02
  • html5怎么实现Photoshop渐变色效果
    这篇文章主要讲解了“html5怎么实现Photoshop渐变色效果”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“html5怎么实现Photoshop渐变色效...
    99+
    2024-04-02
  • Android实现背景颜色滑动渐变效果的全过程
    目录前言一、介绍一下GradientDrawable二、实现三、源码:总结前言 今天和朋友聊到这个功能,刚开始的想法是自定义view,如何进行滑动监听,经过一列操作完成效果后,发现...
    99+
    2024-04-02
  • html5如何实现Photoshop渐变色效果
    小编给大家分享一下html5如何实现Photoshop渐变色效果,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧! 代码如下: <!DOCTYPE html><head&...
    99+
    2024-04-02
  • Android怎么自定义View实现圆弧进度效果
    这篇文章主要介绍“Android怎么自定义View实现圆弧进度效果”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么自定义View实现圆弧进度效果”文章能帮助大家解决问题。技术实现Ar...
    99+
    2023-07-06
  • 使用CSS3怎么实现颜色渐变效果
    本篇文章给大家分享的是有关使用CSS3怎么实现颜色渐变效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。<h2 class="site__title&...
    99+
    2023-06-08
  • Flutter实现渐变色加描边字体效果
    目录写在前面内容实现描边实现渐变一些调整参考写在前面 实现如下图的效果,这个数字的内部和外部都有渐变色。 内容 实现描边 在网上搜索一轮,可以看到通过用 Stack,来让两个 Te...
    99+
    2024-04-02
  • css怎么实现背景颜色渐变效果
    本文小编为大家详细介绍“css怎么实现背景颜色渐变效果”,内容详细,步骤清晰,细节处理妥当,希望这篇“css怎么实现背景颜色渐变效果”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。首先,在页面中创建一个div标签;...
    99+
    2023-07-04
  • CSS怎么实现线性渐变效果
    这篇文章将为大家详细讲解有关CSS怎么实现线性渐变效果,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   代码示例如下:   <!DOCTYPE>   ...
    99+
    2024-04-02
  • css怎么实现圆形渐变进度条效果
    这篇文章给大家分享的是有关css怎么实现圆形渐变进度条效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。实现思路最外面是一个大圆(渐变色)内部里面绘制两个半圆,将渐变的圆遮住(为了看起来明显,左右两侧颜色不一样,...
    99+
    2023-06-08
  • jQuery如何实现字体颜色渐变效果
    这篇文章给大家分享的是有关jQuery如何实现字体颜色渐变效果的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。具体如下:jQuery不允许css属性值为非数字的属性进行动画处理,比...
    99+
    2024-04-02
  • Android自定义View之渐变色折线图的实现
    目录前言如何实现总结前言 在之前的项目中,有做过一个需求,需要实现一个颜色渐变的折线图。当时项目中使用的图表库是MPAndroidChart,但是该库没有提供合适的方法来实现想要的效...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作