android - 怎么样在ondraw()里面把一个view按照一个位置绘制出来?
大家讲道理
大家讲道理 2017-04-17 14:58:40
[Android讨论组]

我想把一个Framelayout绘制在屏幕的某个位置,并用Rect来确定其位置,请问在ondraw()里面应该怎么操作?我找不到什么函数可以绘制一个view。

大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(3)
伊谢尔伦

onDraw(Canvas canvas) 是用来绘制自定义view的,而 FrameLayout 是 android 的布局控件,canvas 并不具备绘制 FrameLayout 的 API,你可以从canvas的文档里查阅所有API:
http://developer.android.com/reference/android/graphics/Canvas.html

如果你是想自定义一个FrameLayout,可以这样做:

public class YourFrameLayout extends FrameLayout{
    Paint mPaint;
    public YourFrameLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public YourFrameLayout(Context context) {
        super(context);
        // Paint类决定如何进行绘制操作。
        // 其方法可指定绘制图形的特征,例如是否填充图形、使用什么字体绘制、线条是什么颜色等。
        mPaint = new Paint();
        mPaint.setColor(0x22ff0000);
    }

    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        // Canvas类具有我们需要的所有绘制操作。
        // 其方法可决定绘制的位置及图形,例如线条、圆形、字词、矩形等
        canvas.drawRect(left, top, right, bottom, mPaint);
        ......
    }   
}

如果你是想把一个Framelayout绘制在屏幕的某个位置,就应该用layout文件;
或者通过代码new一个Framelayout,然后通过LayoutParams设置它的宽度和高度,再通过View.setX(float x)setY()设置坐标。

迷茫

确定位置这事为什么不让 onLayout 来做呢?

ringa_lee

继承一个布局比如FrameLayout 然后在onLayout里控制位置

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号