回答
您必须拥有自己的ImageView并覆盖onDraw函数。使用类似这样的东西
public class MyImageView extends ImageView{
public MyImageView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint p = new Paint(Paint.ANTI_ALIAS_FLAG);
canvas.drawLine(0, 0, 20, 20, p);
}
}
并在您的主类中创建对象MyImageView
;当你触摸你的显示器调用update();
函数
嗨乔治,你的意思是调用onTouch()事件的更新方法?我很抱歉要求太多,我是新来的。 – user776550 2011-05-31 03:31:46
是的,我的意思是。没问题,你可以问你想要多少)) – George 2011-05-31 05:39:21
你必须重写OnTouchListener并在你的OnTouch函数中调用invalidate – George 2011-06-25 06:20:45
对于绘制用户实际绘制的线你必须重写dispatchTouchEvent。从这个事件中,你可以得到这条线的坐标,并按照乔治所示在onDraw中绘制它们。
看看在ApiDemos样品FingerPaint。
通过使用此功能,您可以通过触摸屏幕在ImageView上绘制线条。
这是你如何可以在另一个图像绘制绿色矩形一个完整的例子:
package CustomWidgets;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.util.AttributeSet;
/**
* Allows to draw rectangle on ImageView.
*
* @author Maciej Nux Jaros
*/
public class DrawImageView extends ImageView {
private Paint currentPaint;
public boolean drawRect = false;
public float left;
public float top;
public float right;
public float bottom;
public DrawImageView(Context context, AttributeSet attrs) {
super(context, attrs);
currentPaint = new Paint();
currentPaint.setDither(true);
currentPaint.setColor(0xFF00CC00); // alpha.r.g.b
currentPaint.setStyle(Paint.Style.STROKE);
currentPaint.setStrokeJoin(Paint.Join.ROUND);
currentPaint.setStrokeCap(Paint.Cap.ROUND);
currentPaint.setStrokeWidth(2);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
if (drawRect)
{
canvas.drawRect(left, top, right, bottom, currentPaint);
}
}
}
当你有这样的规定,你可以替换上述视图(部件)例如ImageView的:
<CustomWidgets.DrawImageView
android:id="@+id/widgetMap"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:src="@drawable/map_small"
/>
mapImageView.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
DrawImageView drawView = (DrawImageView) v;
// set start coords
if (event.getAction() == MotionEvent.ACTION_DOWN) {
drawView.left = event.getX();
drawView.top = event.getY();
// set end coords
} else {
drawView.right = event.getX();
drawView.bottom = event.getY();
}
// draw
drawView.invalidate();
drawView.drawRect = true;
return true;
}
});
:
然后你就可以在活动的触摸事件,控制布局用这个例子
当然,你可以制造一些getter和setter以及其他Java过度工程的例程;-)。
- 1. 如何在Android上通过ImageView绘制线条?
- 2. 如何在android中绘制一条线?
- 3. 在毕加索设置的ImageView上绘制一条线
- 4. 在Android上的TextView下绘制线条
- 5. 如何在UICollectionView中绘制一条线?
- 6. 如何在Canvas中的另一个上绘制一条线?
- 7. 在Android上使用surfaceView绘制线条
- 8. Windowsforms:如何在DataGridView上绘制线条?
- 9. 如何在图表上绘制线条?
- 10. 如何在iPad上绘制线条图?
- 11. Android:如何绘制圆角的线条?
- 12. Android ImageView绘制
- 13. 如何在WPF中现有的BitmapSource上绘制一条线?
- 14. 如何在bb中的编码图像上绘制一条线?
- 15. 在ImageView上绘制
- 16. 在WPF中,你如何在WindowsFormsHost上绘制一条线?
- 17. 如何在条形图上绘制轴之间的虚线android
- 18. 在gtk.TextView上绘制线条
- 19. 在c#图上绘制一条线
- 20. 在地图上绘制一条线
- 21. 在Android中绘制图表线条
- 22. 在Android上绘制一条总是与地面平行的线
- 23. 如何在谷歌地图上绘制线条叠加Android
- 24. 如何在xamarin格式的标签上绘制一条线
- 25. 我如何在自己的布局上绘制一条线?
- 26. 如何在Webforms中绘制线条?
- 27. 如何在R中绘制线条?
- 28. 如何在Titanium中绘制线条?
- 29. 如何在VIM中绘制线条?
- 30. 如何在ggplot2中绘制两条线
你想绘制某一行或做一些像绘画一样的东西? – 2012-11-17 11:32:23