效果图

public class SawtoothBlackView extends View {

//自定义画笔的属性

private Paint paint;

//获取屏幕的系数

private DisplayMetrics dm;

//不规则块的高

private int big_heigth;

//总的宽度

private int big_width;

//小角的高度

private int triangle_height;

//小角的高度

private int triangle_width;

//是否是向上画的

private boolean state=true;

public boolean getState() {

return state;

}

public void setState(boolean state) {

this.state = state;

}

public void setPaint(Paint paint) {

this.paint = paint;

}

public void setDm(DisplayMetrics dm) {

this.dm = dm;

}

public void setBig_heigth(int big_heigth) {

this.big_heigth = big_heigth;

}

public void setBig_width(int big_width) {

this.big_width = big_width;

}

public SawtoothBlackView(Context context) {

super(context);

init();

}

public SawtoothBlackView(Context context, AttributeSet attrs) {

super(context, attrs);

init();

}

@TargetApi(Build.VERSION_CODES.LOLLIPOP)

public SawtoothBlackView(Context context, AttributeSet attrs, int defStyleAttr, int defStyleRes) {

super(context, attrs, defStyleAttr, defStyleRes);

init();

}

public SawtoothBlackView(Context context, AttributeSet attrs, int defStyleAttr) {

super(context, attrs, defStyleAttr);

init();

}

private void init(){

dm= new DisplayMetrics();

((Activity)getContext()).getWindowManager().getDefaultDisplay().getMetrics(dm);

paint = new Paint();

//是否设置抗锯齿效果

paint.setAntiAlias(true);

//paint.setStyle(Paint.Style.STROKE);

paint.setColor(getResources().getColor(R.color.black));

//paint.setTextSize((float) 2.0);

//paint.setStrokeWidth(3);

this.big_heigth = (int) (30*dm.density);

this.big_width = dm.widthPixels;

this.triangle_width= (int) (20*dm.density);

this.triangle_height=(int)(10*dm.density);

}

@Override

protected void onDraw(Canvas canvas) {

Path path = new Path(); //定义一条路径

/**

* 首先画出定点距离然后根据小角的宽度计算花多少次角

* 解决铺不满的问题

* 余数除以画的角的数量

* 然后画每个角的时候加

* 保证能铺满

*/

if(state) {

path.moveTo(0, 0);

path.lineTo(0, big_heigth);

int i = 1;

int remainder= big_width%triangle_width;

int lineCount=big_width /triangle_width*2;

for (; i <= lineCount; i++) {

path.lineTo((triangle_width / 2+((float)remainder/(float) lineCount)) * i, i % 2 == 0 ? big_heigth : big_heigth - triangle_height);

}

path.lineTo((triangle_width / 2+((float)remainder/(float) lineCount)) * (i > 1 ? i - 1 : i), 0);

path.lineTo(0, 0);

}else{

path.moveTo(0,0);

int i=1;

int remainder= big_width%triangle_width;

int lineCount=big_width /triangle_width*2;

//path.lineTo(triangle_width/2*i+remainder,i%2==0?0:triangle_height);

for(; i< lineCount; i++){

path.lineTo( ((triangle_width/2+((float)remainder/(float) lineCount))*i),i%2==0?0:triangle_height);

}

path.lineTo(big_width,0);

path.lineTo(big_width, big_heigth);

//path.lineTo(dm.widthPixels, big_heigth);

path.lineTo(0, big_heigth);

path.lineTo(0,0);

}

canvas.drawPath(path, paint);

}

}

使用

android:layout_width="match_parent"

android:layout_height="30dp"

android:id="@+id/sawtooth"

/>

默认是占满全屏幕的

修改参数参照

SawtoothBlackView sawtooth1= (SawtoothBlackView) findViewById(R.id.sawtooth1);

sawtooth1.setState(false);

android 文字锯齿,android自定义view锯齿状效果相关推荐

  1. Android实现雪花特效自定义view

    一.前言 这个冬天,老家一直没有下雨, 正好圣诞节,就想着制作一个下雪的特效. 圣诞祝福:平安夜,舞翩阡.雪花飘,飞满天.心与心,永相伴. 圣诞节是传统的宗教节日,对于基 督徒,那是庆祝耶稣的诞生,纪 ...

  2. android中仿qq最新版抽屉,Android 自定义View实现抽屉效果

    Android 自定义View实现抽屉效果 说明 这个自定义View,没有处理好多点触摸问题 View跟着手指移动,没有采用传统的scrollBy方法,而是通过不停地重新布局子View的方式,来使得子 ...

  3. Android 自定义 圆环,Android自定义view实现圆环效果实例代码

    先上效果图,如果大家感觉不错,请参考实现代码. 重要的是如何实现自定义的view效果 (1)创建类,继承view,重写onDraw和onMesure方法 public class CirclePerc ...

  4. android波纹效果弹窗,Android自定义View实现波纹效果

    Android自定义View实现波纹效果 时间:2017-05-27     来源:移动互联网学院 1.引言:随着Android智能手机的普及,Android应用得到了大力支持,而Android应用的 ...

  5. android 循环弹幕,Android自定义View实现弹幕效果

    原标题:Android自定义View实现弹幕效果 在很多视频直播中都有弹幕功能,而安卓上没有简单好用的弹幕控件,本文介绍一个自定义弹幕view的demo. 效果图: 思路: 自定义Textitem类表 ...

  6. android下雨动画效果,Android 自定义View(二) 下雨效果

    Rain.gif Android 自定义View(二) 下雨效果 一 实现思路, 雨点用线段表示,通过控制线段的大小和宽度来表示不同的线段. 一个雨点下雨的过程可以表示为一条直线,一次雨点在下雨的过程 ...

  7. Android动画特效之自定义View

      Android动画特效之Animator属性动画实现_Angel-杭州的博客-CSDN博客   我在百忙之中抽出宝贵时间来实现Android动画特效,也就是Android Animator动画效果 ...

  8. Android 气泡动画(自定义View类)

    Android 气泡动画(自定义View类) 一.前言 二.代码 1. 随机移动的气泡 2.热水气泡 一.前言 最近有需求制作一个水壶的气泡动画,首先在网上查找了一番,找到了一个文章. https:/ ...

  9. android功能相同的view,Android自定义View实现扫描效果

    本文实例为大家分享了Android自定义View实现扫描效果的具体代码,供大家参考,具体内容如下 演示效果如下: 实现内容: 1.控制动画是竖向或者横向 2.控制动画初始是从底部/左边开始,或者从上边 ...

最新文章

  1. 轻轻一扫,立刻扣款,付款码背后的原理你不想知道吗?
  2. Keras问题“AttributeError: 'NoneType' object has no attribute 'update”解决
  3. oracle23290,oracle标题
  4. Does GATHER_STATS_JOB gather all objects' stats every time?
  5. UTF-8文本文件头部出现乱码“锘*”的问题及解决方法
  6. XTU 1250 Super Fast Fourier Transform
  7. linux php cgi.sock,nginx中unix:/tmp/php-cgi.sock错误解决解决
  8. php同时删除两个列表数据库,PHP 处理 数据库多表,既能高效又能思路清晰如何处理的?...
  9. mysql varchar json_谈谈 MySQL 的 JSON 数据类型
  10. 剑指offer java -查找旋转数组的最小数字
  11. python 中的坦克大战0.1版本
  12. 天空的颜色 454
  13. 虚拟项目产品如何操作赚钱
  14. 高位在前低位在后是啥意思_精喹禾灵原药报价在25.5万元/吨高位,草甘膦原药保持2.5万元/吨...
  15. Java数字转中文数字
  16. Mumble安装部署教程
  17. SPA项目开发 之 登录注册
  18. 【网络爬虫】实现有道翻译提取
  19. MYSQL 基础篇 | 02-MYSQL基础应用
  20. 华为 / 小米都看不惯,微信 iOS / 安卓 8.0.30 正式版终于修复转发文件多次保存问题

热门文章

  1. 小米手机开发者选项打开usb安装需要SIM卡解决办法
  2. Kamiya艾美捷抗胸腺嘧啶二聚体单抗(环丁烷嘧啶二聚体CPD)说明书
  3. 连接线是计算机硬件吗,音箱线怎么连接电脑?有源音箱和无源音箱连接电脑教程...
  4. 【2018年的最佳固态硬盘】最好的固态硬盘可以增强你的电脑
  5. matlab构建信道模型channel model, Rayleigh channel (NLoS), Rician channel (LoS)
  6. 懂技术/ 更应该了解社会 /让社会变好 中国社会学家 周孝正经典语录
  7. 毛不易 胡同 伴奏 高品质定制纯伴奏
  8. 《Java程序小作业之自动贩卖机》#谭子
  9. 蜘蛛侠面具(头套制作)
  10. Mac M1芯片 安装vmware 和ubuntu 以及换源全过程