我的自定义视图中的下一个代码扩展了EditText:
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
int count = getLineCount();
Canvas cvs= new Canvas();
Drawable dr = this.getBackground();
Rect r = mRect;
Paint paint = mPaint;
mTextPaint.setTextSize(this.getTextSize());
Paint PaintText = mTextPaint;
for (int i = 0; i < count; i++) {
int baseline = getLineBounds(i, r);
cvs.drawText(Integer.toString(i+1), r.left, baseline + 1, PaintText);
cvs.drawLine(r.left, baseline + 1, r.right, baseline + 1, paint);
}
cvs.drawLine(PaintText.measureText(Integer.toString(count)), this.getTop(), PaintText.measureText(Integer.toString(count)), this.getBottom(), paint);
dr.setBounds(0, 0, this.getRight(), this.getBottom());
dr.draw(cvs);
this.setBackgroundDrawable(dr);
}
Run Code Online (Sandbox Code Playgroud)
为什么这个观点的背景上没有任何内容?
我正在尝试在画布上绘制一个矩形,中心位于触摸点.我正在使用以下代码:
canvas.drawRect((point.x + 15), (point.y + 15),(point.x + 15),(point.y + 15), paint);
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
但是当我使用时,
canvas.drawRect(point.x , point.y ,(point.x + 30),(point.y + 30), paint);
Run Code Online (Sandbox Code Playgroud)
令人惊讶的是,它有效.但唯一的危害是它不以触摸坐标为中心.矩形的左上角与触摸坐标重合.我哪里错了?
我正在按矩阵翻译和缩放图像,现在我有矩阵值.所以从矩阵值我想将我的触摸坐标转换为它通过矩阵得到的位置.那我该怎么办呢?请尽快帮助我.
private void drawPoint(float x, float y, float pressure, float width) {
// left is tx of matrix
// top is ty of matrix
float curX = (x - left) / (scale * scale);
float curY = (y - top) / (scale * scale);
canvas.drawPoint((curX - left), (curY - top) , mPaint);
}
Run Code Online (Sandbox Code Playgroud) 我想在Android上构建一个工具,用户可以在图片上绘制一些简单的对象(例如直线,圆或箭头).我首先开始尝试线条部分,事实上我可以成功地绘制它.逻辑是用户点击一个点然后拖动他们的手指,画线.我使用这样的类(它基于DonGru的答案):
public class DrawView extends View {
Paint paint = new Paint();
float Sx, Sy, Lx, Ly;
public DrawView(Context context, float x1, float y1, float x2, float y2) {
super(context);
paint.setColor(Color.RED);
Sx=x1;
Sy=y1;
Lx=x2;
Ly=y2;
}
@Override
public void onDraw(Canvas canvas) {
canvas.drawLine(Sx, Sy, Lx, Ly, paint);
}
}
Run Code Online (Sandbox Code Playgroud)
从活动代码我使用onTouch监听器,如下所示:
@Override
public boolean onTouch(View view, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
Sx1 = event.getX();
Sy1 = event.getY();
return true;
case MotionEvent.ACTION_MOVE:
Cx1 = event.getX();
Cy1 = …Run Code Online (Sandbox Code Playgroud) 我正在使用自定义视图创建圆圈:
canvas.drawCircle(width/2, width/2, radius, paint1);
Run Code Online (Sandbox Code Playgroud)
现在,我想从内部清空圆圈,就像戒指一样.
绘制另一个较小的白色圆圈将引发另一个问题 我打算让我的观点听取用户点击.我想只听环上的点击!
有没有办法排除画布的某些部分?
你好伙计们我正在尝试获取一个图像(来自资源的帧)将其覆盖在原始位图上.到目前为止,我无法使我的Bitmap进入框架,因为框架始终为空.原始位图现在显示在框架内.这是我用来完成这个的代码.
Run Code Online (Sandbox Code Playgroud)Canvas canvas = new Canvas(); Bitmap border = null; Bitmap scaledBorder = null; border = BitmapFactory.decodeResource(getResources(), R.drawable.frame1); int width = bmp.getWidth(); int height = bmp.getHeight(); scaledBorder = Bitmap.createScaledBitmap(border,width,height, false); canvas.drawBitmap(scaledBorder, 0, 0, new Paint()); view.setImageBitmap(scaledBorder);
bmp作为我在Gallery或Camera中的原始位图.我找不到把它们放在一起.只显示帧而不是bmp.提前致谢.
我们在从特定视图生成位图时遇到问题.限制是它无法呈现视图(绘图).有没有人有任何提示如何解决这个问题?
类视图的文档(http://developer.android.com/reference/android/view/View.html)对Android用于呈现View的步骤有一些解释.在这种情况下,我们将进入"布局",而不是"绘图".谁有任何想法,可以展示一个例子?
我的代码生成异常:错误 - >宽度和高度必须> 0
...
public static Bitmap loadBitmapFromView(View v) {
Bitmap b = null;
try {
b = Bitmap.createBitmap(
v.getWidth(),
v.getHeight(),
Bitmap.Config.ARGB_8888);
Canvas c = new Canvas(b);
v.measure(v.getWidth(), v.getHeight());
v.layout(0, 0, v.getWidth(), v.getHeight());
v.draw(c);
} catch (Exception e) {
Log.e(MainActivity.TAG, "error -> "+e.getMessage());
}
return b;
}
public void snap(View v) {
LayoutInflater inflate = (LayoutInflater) getBaseContext()
.getSystemService(LAYOUT_INFLATER_SERVICE);
View view = new View(getBaseContext());
view = inflate.inflate(R.layout.list_item, null);
Log.d(MainActivity.TAG, "getWidth -> "+view.getWidth());
Log.d(MainActivity.TAG, "getHeight -> "+view.getHeight()); …Run Code Online (Sandbox Code Playgroud) 我创建了一个应用程序.在我是随机产生latitude,并longitude在GoogleMap并通过该值下页..即CameraPage.但是,在CameraPage上,引脚没有像地图上那样正常掉落..我已经实现了camera-zoom其他方法,但仍然无法正常工作..
请检查屏幕截图..
MapPage

CameraPage

是否有任何解决方案可以缩放相机上的引脚而无需外部变焦控制?
它应该在CameraPage加载时默认缩放..
编辑::
码::
ArrayList<Point> props = new ArrayList<Point>();
props.add(new Point(a_latitude, a_longitude, a_username));
props.add(new Point(b_latitude, b_longitude, b_username));
props.add(new Point(c_latitude, c_longitude, c_username));
props.add(new Point(d_latitude, d_longitude, d_username));
props.add(new Point(e_latitude, e_longitude, e_username));
props.add(new Point(f_latitude, f_longitude, f_username));
props.add(new Point(g_latitude, g_longitude, g_username));
props.add(new Point(h_latitude, h_longitude, h_username));
props.add(new Point(i_latitude, i_longitude, i_username));
props.add(new Point(j_latitude, j_longitude, j_username));
mPaint.setColor(Color.BLACK);
mPaint.setTextSize(30);
mPaint.setStrokeWidth(DpiUtils.getPxFromDpi(getContext(), 2));
mPaint.setAntiAlias(true);
mSpots = new Bitmap[props.size()];
for (int i = 0; i < mSpots.length; …Run Code Online (Sandbox Code Playgroud) 我希望用户能够在画布周围拖动方块的边缘.使用我当前的解决方案它可以工作,但有毛刺,有时无法选择边缘.是否有一种干净的方法来判断是否已经点击了一条线(例如,通过坐标)?这就是我目前正在测试的方式:
// check edge pressed, edge is the line between to
// coords e.g. (i) & (i = 1)
for (int i = 0; i < coords.size(); i++) {
p1 = coords.get(i);
if ((i + 1) > (coords.size() - 1)) p2 = coords.get(0);
else p2 = coords.get(i + 1);
// is this the line pressed
if (p1.x <= event.getX() + 5 && event.getX() - 5 <= p2.x && p1.y <= event.getY() + 5 && event.getY() - 5 <= p2.y) { …Run Code Online (Sandbox Code Playgroud) 我想在画布上绘制具有以下形状的图像:

黑色必须由我的图像替换.我目前正在绘制整个图像.我只是不知道我怎么能得到那种形状?
canvas.drawBitmap(header,0,0,mPaint);
Run Code Online (Sandbox Code Playgroud)
有人能帮我吗?
android ×10
android-canvas ×10
draw ×2
background ×1
bitmap ×1
bitmapimage ×1
drawable ×1
matrix ×1
path ×1
point ×1
touch-event ×1