本文实例为大家分享了android自定义WaveView水波纹控件的使用方法,供大家参考,具体内容如下 Github Repository and libaray WaveView水波纹控件 首先看下演示...:WaveView:1.0.0' } 使用 布局文件中添加view: <com.github.onlynight.waveview.WaveView android:id="@+id/waveView1...实现原理 我们视觉上看到的是水波纹,实际上只是一个正弦波和余弦波向左位移,然后将三角函数的周期加长,在一个view中不显示整个三角函数的的波形,这样从视觉上来说就是水波纹效果啦。...根据上面的分析,我们知道我们需要计算一个正弦波和一个余弦波,并且根据时间的推移将正弦波或者余弦波向左或者向右平移,最后每次计算完波形图的时候绘制下来就完成啦。...有个地方有个坑需要注意,这里可以设置view为圆形;常规的思路是画完以后再将其切成一个圆形,我尝试了各种方法证明这种思路有问题;最后发现需要先限定canvas的绘制区域,然后再将图形绘制到view上去,
; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import...; /** * 默认每一次重绘时波峰1的移动的距离,实现移动效果 */ private final int WAVE_OFFSET1 = 8; /** * 每一次重绘时波峰1的移动的距离,实现移动效果...dingy9i的属性 init(); } //获取布局中的初始属性 private void initAttrs(Context context, AttributeSet attrs) { TypedArray...此处用的是 "50%" 的形式,可以根据需求改变格式 double parseDouble = Double.parseDouble(format1); canvas.drawText((int) (parseDouble...--波浪1的长度、高度、颜色和每次重绘的偏移量-- <attr name="<em>wave</em>1Length" format="integer" / <attr name="<em>wave</em>1Height" format
布局文件定义一下 <RelativeLayout android:id="@+id/rl" android:layout_width="match_parent" android:layout_height...--中心imageView-- <ImageView android:id="@+id/iv_wave" android:layout_width="150dp" android...--中间的imageView-- <ImageView android:id="@+id/iv_wave_1" android:layout_width="150dp" android...--最外层imageView-- <ImageView android:id="@+id/iv_wave_2" android:layout_width="150dp" android...(delayMilliseconds); } 最后在activity的布局文件中引用自定义属性: <com.example.louliang.spread.SpreadView android:layout_width
com.example.mhy.shuibowen; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color...(); } @Override protected void onDraw(Canvas canvas) { for(int i=0; i<wList.size(); i++) { Wave wave...= wList.get(i); canvas.drawCircle(wave.cx, wave.cy, wave.r, wave.p); } } @Override public boolean onTouchEvent...1 否则会漏掉一个对象,不过,在此处影响不大,效果上看不出来。...; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import
最外层的imageView从1.4倍放大到1.8倍,同时从半透明变为全透明 利用shape画一个圆,作为动画基础视图 <?...<solid android:color="@color/colorAccent"/ </shape 布局视图 <FrameLayout android:layout_width="match_parent...--中心imageView-- <ImageView android:id="@+id/iv_wave" android:layout_width="130dp" android...--中间的imageView-- <ImageView android:id="@+id/iv_wave_1" android:layout_width="130dp" android...--最外层imageView-- <ImageView android:id="@+id/iv_wave_2" android:layout_width="130dp" android
通过自定义view实现了一个水滴滴落到水波面,溅起水花并且水波流动上涨的进度条控件。...一.用法 1.布局文件中添加WaveProgressView,circleColor属性为圆环颜色,waterColor属性为水波水滴的颜色,progress属性为初始的进度 <com.yhongm.wave_progress_view.WaveProgressView...android:id="@+id/wave_progress_view" android:layout_width="300dp" android:layout_height="300dp...,水滴的形状是通过一个三角形和一个弧形组成的 /** * 水滴的Path * * @param x 水滴坐标x * @param y 水滴坐标y * @param size...); drawOnBothSidesOfWaterDrop(canvas, mRightPathMeasure); } /** * 产生随机的水滴 * * @param y
它指定要创建的图形的高度和宽度。 例 1 为了使用 matplotlib 创建一个空图形,我们导入了别名 plt 的 matplotlib.pyplot 模块。...但是如果我们不向这个函数传递任何参数,它将创建一个空的数字。最后,我们使用 plt.show() 函数显示了该图。...然后,我们使用 figure() 函数创建了一个 figure 对象。与前面的示例不同,这里的 figure() 函数采用一个参数 figsize,它是一个整数元组。...的默认内联后端在 Python 中使用 Matplotlib 创建一个空图形。...输出 我们学习了如何使用Jupyter notebook的ipympl后端在Python中使用Matplotlib创建一个空图形。这使我们能够在Jupyter笔记本中创建交互式图形。
最近学习了贝塞尔曲线的一些知识,刚好项目中需要实现一个圆形进度,然后就将实现的waveView记录一下。...需要使用的知识大概有自定义view、贝塞尔曲线、valueAnimator(属性动画)、Xfermode等。 以下为效果图: ? 废话不多说,直接上代码这里只是一些重要的代码。...(android.R.color.black)); //圆的背景色 circle_bg_color = ta.getColor(R.styleable.custom_wave_view_attr_circle_background_color...canvas.drawBitmap(mBitmap, 0, 0, null); } 5、使用动画让贝塞尔曲线动起来 /** * 开始动画 让startP的x点坐标在2S时间内循环移动到0点。...="wrap_content" android:layout_height="wrap_content" wave:circle_color = "@color/circle_color" android
1、首先需要在eclipse中去下载一个FreeMarker插件https://blog.csdn.net/IT_CREATE/article/details/86682538 2、创建ftl的文件(有多种方式...,我会分别介绍) 2.1 利用file来创建,我们new个 file文件 写上页面的名字,后缀名改为ftl 这样就创建好了,不过里面没有任何内容,我们需要自己添加一些基本信息 添加一些html的基本样式...,如: 2.2 利用 html来创建,我们new个 html文件 在搜索框输入html,选择HTML File,点击Next 为文件取一个名字,点击next 选择html5 这样就创建好了一个...2、设置 ftl文件的显示风格 因为ftl默认的显示风格是全黑的,所以我们需要一些高亮显示 1)选中你的ftl文件,点击右键,选择Open With–>Other 2)然后弹出来一个选择框,我们勾选Use...it for all ‘.ftl’ files,然后在框中选择HTML Editor ,点击 ok ,这样所有的 ftl文件都用的是html风格的编辑方式,你也可以选择其他的编辑方式,比如jsp风格的
; import android.graphics.Canvas; import android.graphics.Matrix; import android.graphics.Rect; import...; * 当 View 组件从 XML 布局文件中构造时 , 调用该方法 * 提供的 AttributeSet 属性在 XML 文件中指定 ; * 该方法使用默认的风格 defStyleAttr..., 并提供一个主题属性风格 ; * View 组件使用该构造方法 , 从布局中加载时 , 允许使用一个特定风格 ; * 如 : 按钮类的构造函数会传入 defStyleAttr =..., 并提供一个主题属性属性 , 或风格资源 ; * 该构造方法允许组件在加载时使用自己的风格 ; * * 属性设置优先级 ( 优先级从高到低 ) * 1....布局文件中的标签属性 AttributeSet * 2. defStyleAttr 指定的默认风格 * 3. defStyleRes 指定的默认风格 * 4.
先上几张自定义所实现的效果图吧,有兴趣的可以继续往下看 实现思路,前四张图呢在自定义progressbar时没有加入text文本,文本是在xml布局时加上去的,最后一张是与progressbar...可以看到有以下几种情况 1,图1自定义中未集成文本的圆环显示,这样的话需要自己添加文本,做法也很简单 利用相对布局,将文本与progressbar进行嵌套,如下:这是整个页面的布局文件,所自定的view...typedArray.getInt(R.styleable.RoundProgressBar_style,1); typedArray.recycle(); } 在这里用到了一个自定义的风格...RoundProgressBar的style 在values文件夹下创建一个资源文件,在该文件中定义了所需字段的默认值 <?...文件中使用该自定义的控件时用padding属性是没用的,因为在画圆时,原点坐标是view的左上角,圆心坐标是(x轴到圆点的距离,y轴到圆点的距离),要想对控件设置padding属性起作用,必须在画圆时对半径进行修改
以下是一个示例,展示了如何使用 Chart.js 在 Vue 中创建一个简单的折线图: 安装 Chart.js。...可以通过 npm 安装,命令如下: npm install chart.js 在你的 Vue 组件中,按照以下步骤使用 Chart.js 创建折线图: 在组件中引入 Chart.js: import Chart...库,然后在 mounted 钩子中创建了一个折线图。...使用 Chart.js 的 Chart 构造函数来创建图表实例,并传入一个 Canvas 元素和配置选项。指定了折线图类型为 'line',提供了用于展示的数据和样式配置。...在模板中添加了一个 Canvas 元素,通过 ref 属性将其关联到组件中的 ctx 变量。Chart.js 就能够找到正确的元素来渲染图表。 这个示例创建了一个简单的折线图,展示了每个月份的数据。
File-New-Project 选择 Java Project 输入项目名称 点击完成(Finish) 在SRC(SRC是专门放java源代码的文件夹,就是你在IDE里编写的各个java类的文件都在里面...)中新建package包 包的命名规范:包名全部使用小写。...包名通常由若干个标识符组成,标识符之间用点(.)隔开,其第一个标识符往往表示域名。例如,com.sun.eng,其域名是com。...在这里,对包的名称没有特别的要求,我将其命名为net.csdn.dong 这时,在SRC文件夹下新增了一个我们刚刚命名的包。...在这个包中新建一个类 类的命名规范:首字母大写 在这里,我将其命名为HelloWorld 然后点击完成Finish 这时就产生了一个名叫HelloWorld的java文件,随之编辑代码框也出现了
邮政安装数据库 要创建一个Postal的数据库,我们需要先登录到MySQL命令行。 运行以下命令相同。...现在通过运行以下命令为您的网站创建一个新的服务器块。 nano /etc/nginx/conf.d/mail.example.com.conf 使用以下内容填充文件。...输入您之前创建的用户的电子邮件地址和密码。 登录后,系统将要求您创建一个新的组织。 提供组织的名称。 您可以选择使用自动生成的短名称,也可以自己指定一个。...用SMTP服务器进行身份验证时,使用短名称作为用户名。 它应该只包含字母,数字和连字符。 创建组织后,系统将要求您创建一个新的邮件服务器。 提供电子邮件服务器的名称,短名称和模式。...结论 在本教程中,我们使用Ubuntu 17.04上的邮件成功设置了一个功能齐全的邮件服务器。 您可以使用邮件服务器发送和接收组织的电子邮件。
下面这个实例通过前面学过的Paint、Canvas等2D绘画技术来实现一个简单的Android的绘图板。...具体实现代码: 创建一个名为DrawView的类,该类继承自android.view.View类。...canvas) { super.onDraw(canvas); } } 创建布局文件,选择帧布局,并加入上面创建的继承了View的自定义画图控件: res/layout/main.xml...在DrawView类的构造方法中,首先获取屏幕的高度和宽度,并创建一个与该View相同大小的缓存区,然后创建一个新的画面,并实例化一个路径,再将内存中的位图绘制到cacheCanvas中,最后实例化一个画笔...创建一个menu目录,并在该目录中创建一个名称为toolsmenu.xml的菜单资源文件,在该文件中编写实例中所应用的功能菜单,关键代码如下: <?
允许在 CSS 中定义变量和使用变量,是目前支持程度最高的一个 API。...paint 方法用于描述自定义的绘制逻辑,它接收四个参数: ctx:一个 Canvas 的 Context 对象,因此 paint 中的绘制方式跟 canvas 绘制是一样的。...同样的,"如何布局" 的逻辑需要我们自己编写: registerLayout('block-like', class { layout(children, edges, constraints, properties...Layout 类以供调用,它的 layout 方法用于描述自定义的布局逻辑,最终返回一个包含布局后的位置尺寸信息和子节点序列信息的对象,引擎将根据这个对象进行布局渲染。...进阶:实现动态波纹 根据上述步骤,我们演示一下如何用 CSS Painting API 实现一个动态波浪的效果: <!
compose-weather App界面构成 App纵向划分为几个功能区域,每个区域都涉及到一些不同的Compose API的使用 涉及技术点较多,本文主要介绍如何使用Compose绘制自定义图形、...其实Canvas相关API在各个平台都大同小异,但在Compose上的使用有以下特点: 用声明式的方式创建和使用Canvas 通过DrawScope提供必要的state及各种APIs API更简单易用...声明式地创建和使用Canvas Compose中,Canvas作为Composable,可以声明式地添加到其他Composable中,并通过Modifier进行配置 Canvas(modifier =...看起来参数变多了,但是其实已经通过size等设置了合适的默认值,同时省去了对Paint的创建和配置,使用起来更方便。...跟传统Android视图一样,自定义布局需要先后经历measure、layout两步。
了解活动如何生存,以及活动整个生命周期的状态变迁,能更清楚地知道如何去实现活动。 从系统的角度来看,当Android应用(APP)启动运行时,就会创建一个任务(Task)。...活动在onCreate()函数和onDestroy()函数之间所经历的状态变迁,就是完整的生命期。把活动在生命周期中调用的生命进行配对,可以更容易的理解如何使用这些方法。...注意第二个参数使用了android.R.layout.simple_list_item_1 作为 ListView 子项(即列表的每一行)布局的 id,这是一个 Android 内置的布局文件,里面只有一个...Canvas代表了“依附”于指定View的画布。Android的Canvas不仅可以绘制简单的几何图形,还可以直接将一个Bitmap绘制到画布上。...(ovalRect, paint); Paint表示画布上Canvas的画笔,定义不同的Paint对象,可以设置各种绘制风格,这里设置绘制去锯齿,然后定义了画笔的颜色、填充风格和画笔的粗细。
写在前面 其实很多公司或者资深的开发都有自己快速创建项目的脚手架的,有的是魔改代码生成器实现,有的直接基于T4,RazorEngine等模板引擎打造;但无论如何,其最终目的其实就是搭建一个自定义项目模板...今天我们聊聊:如何基于官方的cli donet new 命令创建自己的项目模板。...什么是项目模板 我想用一个命令来说明: dotnet new list 到这里大家就非常熟悉了,原来大家平时创建项目都是基于已有的模板创建的(红圈部分大家应该不陌生);我们今天目的就是创建一个这样的模板...,并在vs新建项目时可供选择创建项目,或者使用cli命令直接创建; 当然,还有公开模板: https://dotnetnew.azurewebsites.net/ 创建自己的模板 1、先准备好一个项目...-Source参数,如果你有搭建好自己的nuget服务端的话改成你自己的; 如何使用一个模板 模板有了,怎么用这个就简单了; vs使用 在创建项目时直接选择自定义模板 不过这样的话,自定义参数都是用默认值
目前,它已经得到了所有浏览器的支持,这意味着,现在就能很安全地使用这项功能。 ? Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。...任何一个容器都可以指定为 Flex 布局。只要将它的 display属性设置为 flex / inline-flex / -webkit-flex; /* Safari */ 这样就可以了。...space-around:每个项目两侧的间隔相等。所以,项目之间的间隔比项目与边框的间隔大一倍。 ? align-items 属性定义项目在交叉轴上如何对齐。...搞明白布局之后,我们就可以开始动手制作,把FLEX做成可动态调用的组件。这样以后使用的时候就方便很多了。 第一步:建立 flex 组件 ?...我们制作了一个 两行 三列的布局,并配合图标及文字完成了一个小导航设置。 ? 总结:flex布局功能很强大,在小程序开发过程中确实可以减少很多开发时长。。
领取专属 10元无门槛券
手把手带您无忧上云