Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/205.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 剪裁图层列表中平铺位图的角点_Android_Android Resources_Layer List - Fatal编程技术网

Android 剪裁图层列表中平铺位图的角点

Android 剪裁图层列表中平铺位图的角点,android,android-resources,layer-list,Android,Android Resources,Layer List,我希望完成一些看起来像这里底部的东西(对于所有四个角,但我只有图像的底部向您展示): 到目前为止,我所拥有的: <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <item> <bitmap android:src="@drawable/orange_tile

我希望完成一些看起来像这里底部的东西(对于所有四个角,但我只有图像的底部向您展示):

到目前为止,我所拥有的:

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/orange_tile"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="0.5dp" />
        </shape>
    </item>
</layer-list>

但是,根据预览,每个角落都有少量像素:

那么,如何剪裁这些角?可见的笔划不是它,也不是真正想要的


尝试过的事情:

添加一个固体的项目提供了完美的相反我想要的。可能有一个掩蔽技巧

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item>
        <bitmap android:src="@drawable/orange_tile"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    <item>
        <shape android:shape="rectangle">
            <color android:color="@color/white" />
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="0.5dp" />
        </shape>
    </item>
</layer-list>


瓷砖:


我可以想出几个选择

  • 只需再添加一个背景矩形以隐藏角点:

    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item>
        <bitmap android:src="@drawable/orange_tile"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="0.5dp"/>
        </shape>
    </item>
    
    <item>
        <shape android:shape="rectangle">
            <corners android:radius="0dp"/>
            <stroke android:color="@color/white" android:width="0.5dp"/>
        </shape>
    </item>
    
    </layer-list>
    

  • 是否要剪裁/删除橙色图像背景?对吗?你能不能也提供“橙色瓷砖”的绘图工具?@jiteshmohite我想去掉背景的角落tile@jiteshmohite添加了瓷砖。选项3不是每一个瓷砖都要轮换吗?选项1和2还有其他的副作用,打破了我的(未发布的)要求。这不能怪你,完全是我的错。我认为你可以在第三种方法中使用基于可在android上绘制的平铺xml的位图:tileMode=“repeat”。我很抱歉我处理得不恰当。我们在接近项目结束的时候有点死气沉沉,我无法完全验证这一点,我们还改变了布局以避免这个问题。我仍然觉得你的时间和解决方案应该得到回报,但我还没有尝试最后的方法。非常感谢。
    <?xml version="1.0" encoding="utf-8"?>
    <layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    
    <item>
        <bitmap android:src="@drawable/icon_bg"
            android:tileMode="repeat"
            android:dither="true"
            android:gravity="center" />
    </item>
    
    <item android:top="-1.5dp" android:bottom="-1.5dp"
        android:left="-1.5dp" android:right="-1.5dp"
        >
        <shape android:shape="rectangle">
            <corners android:radius="2dp"/>
            <stroke android:color="@color/white" android:width="1.5dp"/>
        </shape>
    </item>
    
    </layer-list>
    
    float cornerRadius = 2f * Resources.getSystem().getDisplayMetrics().density;    
    
    Bitmap tileBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.orange_tile);
    RoundedBitmapDrawable roundedTileDrawable = 
        RoundedBitmapDrawableFactory.create(getResources(), tileBitmap);
    
    roundedTileDrawable.setCornerRadius(cornerRadius);