我为矩形形状创建了一个类,因为它是应用程序中的对象。但是现在我希望角落是圆的。在下面你可以看到它是一个裸骨类,可以创建我想要的具有相同属性的尽可能多的矩形。
public class customDrawable extends ShapeDrawable {
public void setCustomDrawableAttributes(ShapeDrawable shapeDrawable){
int x = 0;
int y = 0;
int width = 100;
int height = 100;
shapeDrawable.setBounds(x, y-height, x + width,y+height );
}
public ShapeDrawable createShape(){
return new ShapeDrawable(new RectShape());
}
}
更新:没有这个方法,我什么也画不出来,因为没有尺寸。用它只能画出普通的矩形。(更改后的整数值不显示应用程序特定的方法)
public void setDrawableAttributes(ShapeDrawable shapeDrawable){
int x = 0;
int y = 500
int width = 200
int height = 300
shapeDrawable.setBounds(x, y-height, x + width,y+height );
}
从我的研究中,我发现我不能简单地添加圆角,而是必须创建一个< code > RoundRectShape shapeDrawable 。我用这个< code>RoundRectShape创建圆角矩形的每一次尝试都失败了。不知何故,这个形状最终总是一个没有圆角的规则矩形。
我正在寻找一个简单的类(就像提供的那样),它可以创建一个roundRectShape绘图。高度和宽度并不重要,只要它有圆角。必须是Java而不是XML。
我尝试过创建圆形矩形的链接:
1.https://developer.android.com/reference/android/graphics/drawable/shapes/RoundRectShape.html
2.http://alvinalexander.com/java/jwarehouse/android/graphics/java/android/graphics/drawable/shapes/RoundRectShape.java.shtml
3.https://www.codota.com/android/scenarios/52c5d269da0a37e1836d6e75/android.graphics.drawable.shapes.RoundRectShape?tag=coyote
4.http://developer.oesf.biz/em/developer/reference/durian/android/graphics/drawable/shapes/RoundRectShape.html
5.https://android.googlesource.com/platform/frameworks/base//donut release/graphics/java/android/graphies/drawable/shapes/RoundRectShape.java
6.Android:圆形矩形:html" target="_blank">修改角半径
7 . http://www . program creek . com/Java-API-examples/index . PHP?API = Android . graphics . drawable . shapes . roundrectshape
9.//程序讨论.com//api-use-examples/android.graphics.可绘制.形状
为什么不使用Canvas
类的draRoundRect
函数?公共类RoundRect{int l, r, t, b, rx, ry;油漆油漆;
public RoundRect(int l,int r,int t,int b,int rx,int ry,Paint paint){
this.l=l;
this.r=r;
this.t=t;
this.b=b;
this.paint=paint;
}
public void draw(Canvas c,Paint paint){
c.drawRoundRect(l,t,r,b,rx,ry,paint);
}
}`
自定义绘图
您可以通过扩展drawable类来创建自定义drawable
创建自定义绘图的步骤
1.SubclassDrawable和实现以下方法方法
2.在< code>onDraw()中调用canvas.drawRoundRect()方法来绘制形状
>
公共无效drawRoundRect(@android.support.annotation.NonNullandroid.graphics.RectFrect,浮动rx,浮动ry,@android.support.annotation.NonNullandroid.graphics.Paint油漆)
使用指定的油漆绘制指定的圆角矩形。roundrect将根据绘画中的样式进行填充或加框。
参数:
1) rect -要绘制的圆角矩形的矩形边界2) rx -用于圆角的椭圆的x -半径3) ry -用于圆角的椭圆的y -半径4) paint -用于绘制圆角矩形的颜料
代码示例
import android.graphics.Canvas;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
/**
* Created by jinesh on 24/5/17.
*/
public class RoundedRectangle extends Drawable {
private Paint rectPaint;
private RectF drawableBounds;
public RoundedRectangle(int rectBackground) {
rectPaint=new Paint(Paint.ANTI_ALIAS_FLAG);
rectPaint.setColor(rectBackground);
drawableBounds=new RectF();
}
@Override
public void draw(@NonNull Canvas canvas) {
Rect bounds=getBounds();
drawableBounds.set(bounds.left,bounds.top,bounds.right,bounds.bottom);
canvas.drawRoundRect(drawableBounds,10,10,rectPaint);
}
@Override
public void setAlpha(@IntRange(from = 0, to = 255) int alpha) {
rectPaint.setAlpha(alpha);
}
@Override
public void setColorFilter(@Nullable ColorFilter colorFilter) {
rectPaint.setColorFilter(colorFilter);
}
@Override
public int getOpacity() {
return PixelFormat.TRANSLUCENT;
}
}
设置为活动中的任何视图
RoundedRectangle roundedRectangle=new RoundedRectangle(ContextCompat.getColor(this,R.color.colorAccent));
textView.setBackground(roundedRectangle);
截图:
我已经创建了一个类< code>MyRect,用于为您绘制圆角矩形。
public class MyRect {
public static Paint paint; // default paint use for all my MyRect objects
static {
paint=new Paint();
paint.setColor(Color.RED);
}
public float x,y,width,height;
public float roundStrength=30;
public MyRect(float x, float y, float width,float height){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
}
public MyRect(float x, float y, float width,float height,float roundStrength){
this(x,y,width,height);
this.roundStrength=roundStrength;
}
public void draw(Canvas canvas){
canvas.drawRoundRect(x-width/2,y-height/2,x+width/2,y+height/2,roundStrength,roundStrength,paint);
}
}
创建以上< code>MyRect的对象是不够的,我们需要在任何容器中保存对象的引用,以便我们可以在将来修改或删除该对象。
static ArrayList<MyRect> myRects=new ArrayList<>();
在视图
/SurfaceView
的onDraw(Canvas画布)
方法中调用MyRect的绘制()
方法。
for(MyRect rect:myRects)
rect.draw(canvas);
完成,创建对象并添加到容器。
myRects.add(new MyRect(touchx,touchy,100,100));
或
myRects.add(new MyRect(touchx,touchy,100,100,50));
您还可以扩展MyRect
,例如根据您的要求添加更多构造函数、方法和数据成员。
JavaScript对每个创建的对象都会设置一个原型,指向它的原型对象。 当我们用obj.xxx访问一个对象的属性时,JavaScript引擎先在当前对象上查找该属性,如果没有找到,就到其原型对象上找,如果还没有找到,就一直上溯到Object.prototype对象,最后,如果还没有找到,就只能返回undefined。 例如,创建一个Array对象: var arr = [1, 2, 3]; 其
问题内容: 如何使用Google Gson创建json对象?以下代码创建一个看起来像的json对象 如何创建像这样的jSon对象? 问题答案: 弄清楚了如何使用Java对象正确执行此操作。 Creator java类的实现。
问题内容: 我正在尝试学习python,现在我试图摆脱类的困扰,以及如何使用实例操作它们。 我似乎无法理解这个练习问题: 创建并返回其名称,年龄和专业与输入的对象相同的学生对象 我只是不明白对象的含义,是否意味着我应该在包含这些值的函数内创建一个数组?或创建一个类,然后将该函数放入其中并分配实例?(在问这个问题之前,我被要求开设一个学生班,里面要写姓名,年龄和专业) 问题答案: 请注意,即使Pyt
当我创建GET响应时,出现了Stackoveflow错误 应答控制器 他用AjaxResponseBody类作为答案 当这个控制器工作时,我捕捉到 我是如何理解这种情况的,因为模型用户和模型项目彼此有链接。模型用户有一个可选字段“监视的项目”。 并且模型项目具有字段,而不是empriy字段“author”: 我怎么能放弃它?还是其他方式?
虽然Object 构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码。为解决这个问题,人们开始使用工厂模式的一种变体。 6.2.1 工厂模式 工厂模式是软件工程领域一种广为人知的设计模式,这种模式抽象了创建具体对象的过程(本书后面还将讨论其他设计模式及其在JavaScript 中的实现)。考虑到在ECMAScript 中无法创建类
3D 效果使您可以从二维 (2D) 图稿创建三维 (3D) 对象。您可以通过高光、阴影、旋转及其他属性来控制 3D 对象的外观。您还可以将图稿贴到 3D 对象中的每一个表面上。 有两种创建 3D 对象的方法:通过凸出或通过绕转。另外,还可以在三维空间中旋转 2D 或 3D 对象。要应用或修改现有 3D 对象的 3D 效果,请选择该对象,然后在 “外观 ”面板中双击该效果。 注:3D 对象在屏幕上可