自适应各种宽度的虚线怎么做?

说到虚线,大家肯定想到shape,比如:

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="line" >
    <stroke
        android:dashGap="3dp"
        android:dashWidth="6dp"
        android:width="1dp"
        android:color="#63a219" />
    <!-- 虚线的高度 -->
    <size android:height="1dp" />
</shape>


<View
        android:layout_width="150dp"
        android:layout_height="15dp"
        android:background="@drawable/shape_line_dash" />


效果:

(如果运行后显示实线,在xml中对应的view中加上如下代码:

android:layerType="software"
目的是去除硬件加速,这样就可以显示了)


但是今天美工给了个图是这样的:


对,是圆点,因为Android都要自适应屏幕宽度,所以不肯能直接叫美工切图,这种情况也不能使用点九图,因为点九图是纯拉伸的,那怎么办呢?

我想到了Bitmap可以有平铺的效果(就是重复铺放),所以我的方法如下:

先让美工切了个小图:


然后代码是这么写的:

drawable文件:bg_pointss_line.xml

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@mipmap/bg_points_line"
    android:tileMode="repeat"/>

layout中的代码:

<View
     android:id="@+id/points_line"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:background="@drawable/bg_points_line" />

但是你会发现效果是这样的:



可以在layout中直接设置它的高度,但是为了准确,我在Activity中设置它的高度:

//虚线(控制高度)
Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(), R.mipmap.bg_points_line);
ViewGroup.LayoutParams lp = points_line.getLayoutParams();
lp.height = bitmap.getHeight();
points_line.setLayoutParams(lp);

最后就能获得准确适配宽度的虚线了,跟美工给的图一模一样~~






  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值