我对Android很新,并且一直在玩Canvas.我试图画一个箭头,但我只是在绘制轴时没有运气,箭头都没有工作.
我搜索了一下,发现了一个Java示例,但Android没有GeneralPath或者AffineTransform.
现在我的代码如下所示(箭头看起来像箭头):
public class DrawableView extends View {
Context mContext;
private int centerX;
private int centerY;
private int radius;
private double arrLength;
private double arrHeading;
private int margin = 10;
public DrawableView(Context context) {
super(context);
mContext = context;
}
@Override
protected void onDraw(Canvas canvas) {
//Paint Background
Paint background = new Paint();
background.setColor(getResources().getColor(R.color.background);
canvas.drawRect(0, 0, getWidth(), getHeight(), background);
//Set vars for Arrow Paint
Paint paint = new Paint();
paint.setColor(getResources().getColor(R.color.arrowColor);
centerX = getWidth() / 2;
centerY …Run Code Online (Sandbox Code Playgroud) 我正在使用Android studio 1.2.2并且需要知道如何在drawable文件夹中创建新的形状文件.我已经在Eclipse中做了同样的事情,但在android studio 1.2.2中无法做到这一点
给定一个点的坐标,我如何确定它是否在任意形状内?
形状由一系列点定义,我不知道形状是"闭合"的,我真正需要帮助的部分是找出形状闭合的地方.
这是一张图片来说明我的意思更好一点:

在我们的Android应用程序中,我们需要创建一个浮动动作按钮,它不是默认的圆形,而是一个带有三个圆角的正方形.晶圆厂如下图所示:
我设法创建了这样一个表格,但不知道如何将它应用到我的工厂,或者甚至可能.该形状的xml文件如下所示:
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<solid android:color="@color/red" />
<corners
android:topLeftRadius="90dp"
android:topRightRadius="90dp"
android:bottomRightRadius="90dp"/>
</shape>
Run Code Online (Sandbox Code Playgroud)
我试着改变形式
android:src="@drawable/my_shape"
Run Code Online (Sandbox Code Playgroud)
但这只会改变我按钮内的图标.我想我需要扩展FloatingActionButton,但我不知道如何.
有没有办法改变晶圆厂的形状?如果有人已经实现了这一点,我将很高兴看到一个样本.
创建一个形状需要哪些步骤,例如使用Canvas从头开始带阴影的矩形?
在用于绘制矩形的绘制中添加阴影图层不会成功.
我试图以编程方式更改selectable_kachel_shape的颜色.这是xml文件:
kachel_ticked_style.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >
<item>
<shape
android:id="@+id/selectable_kachel_shape"
android:shape="rectangle" >
<stroke
android:width="5dp"
android:color="@color/headrbar_color" />
</shape>
</item>
<item>
<rotate
android:fromDegrees="45"
android:pivotX="120%"
android:pivotY="100%"
android:toDegrees="45" >
<shape android:shape="line" >
<stroke
android:width="40dp"
android:color="@color/headrbar_color" />
</shape>
</rotate>
</item>
<item
android:right="5dp"
android:top="5dp">
<bitmap
android:gravity="top|right"
android:src="@drawable/selectable_tiles_check" />
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
我在片段内调用以下代码
LayerDrawable layers = (LayerDrawable) this.getActivity().getResources().getDrawable(R.drawable.kachel_ticked_style);
GradientDrawable shape = (GradientDrawable) (layers.findDrawableByLayerId(R.id.selectable_kachel_shape));
shape.setColor(this.getActivity().getResources().getColor(android.R.color.background_dark);
Run Code Online (Sandbox Code Playgroud)
1.为什么我在shape.setColor中设置NullPointerException ?
2.如何以编程方式更改图层内部的形状内的颜色?
我正在创建一个自定义进度条(位于a下面WebView),我想绘制的是一条1dp宽的线WebView和它之间的线ProgressBar.我正在修改现有的drawable,即progress_horizontal.xml尝试过这样的事情:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
(...)
<item>
<shape android:shape="line">
<stroke android:width="1dp" android:color="#FF000000" />
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
然而,这条线是垂直居中的,但我希望它在drawable的顶部绘制.我能提出的唯一想法是在下面使用这个"hacky"渐变:
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
(...)
<item>
<shape>
<gradient
android:startColor="#FF000000"
android:centerColor="#00000000"
android:centerY="0.01"
android:endColor="#00000000"
android:angle="270"
/>
</shape>
</item>
</layer-list>
Run Code Online (Sandbox Code Playgroud)
您是否有更好的想法如何绘制与定义的drawable顶部对齐的单一线条形状layer-list?
我正在尝试在Android中制作可自定义的图标.我制作了矢量元素,但现在我想给它一个圆形背景,所以我试着把它放在一个圆形的形状中.像这样:
<?xml version="1.0" encoding="utf-8"?>
<!-- drawable/circle_card_icon.xml -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:height="24dp"
android:width="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path android:fillColor="#000"
android:pathData="M20,2H4A2,2 0 0,0 2,4V22L6,18H20A2,2 0 0,0 22,16V4A2,2 0 0,0 20,2M6,9H18V11H6M14,14H6V12H14M18,8H6V6H18" />
</vector>
</shape>
Run Code Online (Sandbox Code Playgroud)
通过仅使用矢量我不会得到背景.
(我用这个网站生成矢量)
我正在寻找一种算法,我可以检查凸多边形(形状1)是否适合另一个多边形(形状2).
我的第一项研究将我带到了"包装不规则形状".这在我看来有点矫枉过正.我只有一个容器和一个对象.
形状1通常是凸多边形.形状2可以是凸的或凹的.
我的应用:我有三维激光扫描仪测量原木,这给我形状2.我也有不同的切割轮廓,我认为凸形船体,形状1.
现在我想检查切割轮廓是否适合我的激光轮廓.
我正在尝试将一系列照片制作成方形照片.它们可以是水平矩形(即600x400)或垂直(400x600),但我希望它们在任何一种情况下都是175x175.我的想法是最小高度或最大宽度较小的一侧,并且不允许溢出超过175px在较大的一侧...但是,我遇到了问题.
这可能与CSS?
下面是我的尝试,但它仍然给出了矩形:
<div style="min-height:175px; overflow:hidden; max-height:175px;">
<img style="min-width:175px; overflow:hidden; max-height:175px;" src="/photo.png">
</div>
Run Code Online (Sandbox Code Playgroud)