首页 文章 精选 留言 我的

精选列表

搜索[矢量图形],共8539篇文章
优秀的个人博客,低调大师

Android绘制(一):来用shape绘出想要的图形吧!

目录 前言 shape绘制 矩形 椭圆 线 环 用shape绘制SeekBar 最后 前言 在没有UI设计师的时候, 或者是想简单看下效果的时候, 用shape进行快速绘制是极好的! 官方文档. shape绘制 一共有四种shape: rectangle, oval, line, ring. 矩形 我们一个一个来看, 首先是矩形: 矩形例子 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <!-- 尺寸 --> <size android:width="160dp" android:height="80dp" /> <!-- 颜色 --> <!--<solid android:color="@color/colorPrimary" />--> <!-- 内间距 --> <padding android:bottom="8dp" android:left="8dp" android:right="8dp" android:top="8dp" /> <!-- 渐变 --> <gradient android:angle="45" android:endColor="@color/colorPrimary" android:startColor="@color/colorAccent" android:type="linear" /> <!-- 圆角 --> <!--<corners android:radius="200dp" />--> <!-- 圆角单独设置 --> <corners android:bottomLeftRadius="0dp" android:bottomRightRadius="0dp" android:topLeftRadius="40dp" android:topRightRadius="40dp" /> <!-- 描边 --> <stroke android:width="2dp" android:color="#666" android:dashGap="4dp" android:dashWidth="4dp" /> </shape> 渐变gradient是会覆盖颜色的, 如果你想要纯色, 直接设置颜色值即可, 就是设置solid中的color. 顺带一提, solid只有color一个参数. 如果你没有渐变gradient, 也不写solid, 那么将会是空心的. 渐变gradient的type参数有3个: linear 线性渐变 sweep 扫描渐变 radial 放射渐变, 需要配合参数gradientRadius 圆角corners可以直接设置radius, 也可以一个一个指定. 描边stroke的话不写dashGap, dashWidth就会是实线, dashWidth代表虚线宽度, dashGap代表虚线间隔. 内间距padding和尺寸size就不提了, 大家都懂的. 椭圆 椭圆例子 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <!-- 尺寸 --> <size android:width="160dp" android:height="80dp" /> <!-- 颜色 --> <!--<solid android:color="@color/colorPrimary" />--> <!-- 内间距 --> <padding android:bottom="8dp" android:left="8dp" android:right="8dp" android:top="8dp" /> <!-- 渐变 --> <gradient android:centerColor="@color/colorPrimary" android:endColor="@color/colorPrimaryDark" android:startColor="@color/colorAccent" android:type="sweep" /> <!-- 描边 --> <stroke android:width="1dp" android:color="#333" /> </shape> 渐变是最多可以设置三种颜色, 意思一看便知了: startColor centerColor endColor 一般椭圆都会用来绘制实心的小圆点. 线 线就很简单了: 线例子 <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="line"> <!-- 描边 --> <stroke android:width="8dp" android:color="@color/colorPrimary" android:dashGap="8dp" android:dashWidth="6dp" /> </shape> 环 最后来看环, 它有些特有属性: 环例子B <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:innerRadiusRatio="4" android:shape="ring" android:thicknessRatio="100" android:useLevel="false"> <!-- 尺寸 --> <size android:width="200dp" android:height="200dp" /> <!-- 渐变 --> <gradient android:angle="0" android:centerColor="@color/colorPrimaryDark" android:endColor="@color/colorPrimary" android:startColor="@color/colorAccent" android:type="sweep" /> <!-- 描边 --> <stroke android:width="1dp" android:color="#777" android:dashGap="4dp" android:dashWidth="4dp" /> </shape> thicknessRatio 指的是环厚度百分比, 默认是9, 比如说这里宽度是200dp, thicknessRatio是100, 环厚度就是200dp / 100 = 2dp. 当然, 你可以直接用thickness设置厚度. innerRadiusRatio 是内环百分比, 默认是3, 就是指用宽度 / 百分比得到的值就是内环半径. 同样可以用innerRadius直接设置. 用shape绘制SeekBar 我知道有很多非常好看的自定义进度条, 但是我写这个SeekBar是想补充下shape的使用, 用非常少量的代码实现自定义进度条. 来看看效果图: 用shape绘制SeekBar 实现 <SeekBar android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="@dimen/eight_dp" android:max="200" android:maxHeight="@dimen/eight_dp" android:minHeight="@dimen/eight_dp" android:progressDrawable="@drawable/layout_progress" android:thumb="@drawable/shape_circle" /> 简单解释下几个要点属性: max代表进度条最大的值. maxHeight, minHeight可以设置进度条宽度, 我喜欢稍微宽一点的. thumb设置滑块, 可以是图片, 可以是shape写的设置. progressDrawable代表进度条的外观, 可以是图片, 可以是shape写的设置. 再来看看滑块和进度条外观具体代码, 进度条可以设置背景, 进度, 和第二进度. 滑块的话, 你想画成什么样都行. <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@android:id/background"> <shape> <corners android:radius="@dimen/four_dp" /> <solid android:color="@android:color/darker_gray" /> </shape> </item> <item android:id="@android:id/secondaryProgress"> <clip> <shape> <corners android:radius="@dimen/four_dp" /> <solid android:color="@color/colorAccent" /> </shape> </clip> </item> <item android:id="@android:id/progress"> <clip> <shape> <corners android:radius="@dimen/four_dp" /> <solid android:color="@android:color/holo_blue_light" /> </shape> </clip> </item> </layer-list> <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval"> <solid android:color="@android:color/holo_blue_light" /> <stroke android:width="@dimen/one_dp" android:color="@android:color/holo_blue_light" /> <size android:width="@dimen/sixteen_dp" android:height="@dimen/sixteen_dp" /> </shape> java部分的话, 用Handler实例postDelayed方法让进度条跑起来就可以看到效果了. 这里设定50ms发一次消息. findViewById(R.id.cv_start).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (mRunnable == null) { mRunnable = new MyRunnable(); mHandler.postDelayed(mRunnable, 0); } } }); findViewById(R.id.cv_stop).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mHandler.removeCallbacks(mRunnable); mRunnable = null; } }); private class MyRunnable implements Runnable { @Override public void run() { int progress = mSbTest.getProgress(); mTvProgress.setText(String.valueOf(progress)); mSbTest.setProgress(++progress); mSbTest.setSecondaryProgress(progress + 10); int progress2 = mSbTest2.getProgress(); mTvProgress2.setText(String.valueOf(progress2)); mSbTest2.setProgress(++progress2); mSbTest2.setSecondaryProgress(progress2 + 20); mHandler.postDelayed(this, 50); } } 最后 我个人还是偏向用shape绘制的, 图片一出理不好就是内存溢出啊, 形变啊, 还要注意分辨率, 真心头大. 喜欢记得点赞哦, 暗中关注我也是可以的~

优秀的个人博客,低调大师

开源 MQTT 图形客户端 MqttInsight 发布 v1.0.3

本次发布重点是新增了消息数量、消息负载、消息内容提取等统计图表的功能,可以灵活的从主题和消息内容中通过通配符、正则表达式、JsonPath、XPath来匹配和提取需要的内容生成相应的图表。 本次详细更新信息如下: 新增 ✨ 新增消息数量、消息负载、消息内容等统计图表 消息时间显示格式可在选项中设置 发布历史记忆(相同主题的保留最后发送的载荷) 增加消息导出为CSV格式文件 优化 🙌 退出时清除临时文件夹 优化消息导出 优化消息发布面板高亮语法支持 优化菜单,屏蔽被非鼠标左键点击执行 允许未订阅而收到的消息 变更已收藏的订阅的格式时可自动保存订阅的格式 修复 🐛 修复与Broker断开后不能重连的问题 修复通过脚本订阅的主题未出现在订阅面板的问题 修复日志标签页关闭后不再输出日志的问题 修复发布QoS>0的消息时如果Broker未回复PUBACK导致卡死的问题 修复关闭订阅后列表未及时刷新的问题 修复取色下拉面板布局错乱的问题 修复订阅列表不能及时刷新的问题 修复消息搜索栏输入搜索文本后直接点击过滤按钮不能启动搜索和过滤的问题

优秀的个人博客,低调大师

开源 MQTT 图形客户端 MqttInsight 发布 v1.0.2

MqttIntight是一个开源的跨平台MQTT桌面客户端, 已被mqtt.org官网收录。 主要功能 跨平台, 支持 Windows、Linux、MacOS; 支持MQTT3、MQTT5; 支持 WebSocket; 支持表格和对话两种消息视图; 支持兼容Node.js 的Javascript脚本(基于Javet实现), 可扩展实现消息解码、消息转发及其他各种功能; 支持PlainText、JSON、XML、HEX和Base64常规消息编解码,支持SPI扩展编解码器; 本次更新内容如下: 新增 ✨ 连接管理增加连接测试按钮 搜索栏支持主题搜索和过滤 增加订阅全部收藏的下拉菜单项(收藏数量大于1时) 消息预览可选格式化(默认启用) 消息发布面板高亮语法支持 优化 🙌 增加一些菜单项的图标 订阅列表中已订阅项目允许更改颜色 下拉按钮和 ColorPicker 组件优化 允许同时打开多个设置为随机 clientId 的连接 修复 🐛 消息搜索框颜色不能还原的问题 切换视图后消息预览空白的问题 统一清除消息图标 修复自动滚动在切换视图后失效的问题 主题编辑框退格键无效的问题(订阅窗口和发布面板)

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册