调整自定义视图屏幕底部 [英] Aligning custom view to screen bottom

查看:151
本文介绍了调整自定义视图屏幕底部的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了自己的看法。它是一个半圆。我想它,将其调整到屏幕的底部。一直以来,我使用drawArc拔出来,它不对齐的底部。我曾尝试设置一个圆圈中心的y坐标联合事件与屏幕底部统筹的替代品。我不希望使用它,因为我希望实现一些附加的东西出来。这里是我的code为自定义视图。

I have created my own view. It is a semicircle. I want it to align it to the bottom of the screen. Since, I drew it using drawArc, it does not align to the bottom. I have tried the alternative of setting a circle with center's y co-ordinate co-incident with screen bottom co-ordinate. I do not wish to use it as I wish to implement some additional things to it. Here is my code for custom view.

package legacy_systems.customview;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;

public class CircleView extends View{

    private Paint markerPaint;
    private Paint textPaint;
    private Paint circlePaint;
    private int textHeight;

    public CircleView(Context context)
    {
        super(context);
        initCircleView();
    }

    public CircleView(Context context, AttributeSet attrs)
    {
        super(context, attrs);
        initCircleView();
    }

    public CircleView(Context context, AttributeSet attrs, int defaultStyle)
    {
        super(context, attrs, defaultStyle);
        initCircleView();
    }

    protected void initCircleView()
    {
        setFocusable(true);

        circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        circlePaint.setColor(getResources().getColor(android.R.color.black));
        circlePaint.setStrokeWidth(3);
        circlePaint.setStyle(Paint.Style.STROKE);

        markerPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
        markerPaint.setColor(getResources().getColor(android.R.color.darker_gray));
    }

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec)
    {
        int measuredWidth = measure(widthMeasureSpec);
        int measuredHeight = measure(heightMeasureSpec);

        int d = Math.min(measuredWidth, measuredHeight);

        setMeasuredDimension(d,d);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        int px, py;

        px = getMeasuredWidth()/2;
        py = getMeasuredHeight()/2;

        int radius = Math.min(px, py);

        RectF oval = new RectF();
        oval.set(px-radius, py-radius, px+radius, py+radius);

        canvas.drawArc(oval,180,180,false, circlePaint);
        //canvas.drawCircle(px, py, radius, circlePaint);
        canvas.save();



    }

    private int measure(int measureSpec)
    {
        int result = 0;

        int specMode = MeasureSpec.getMode(measureSpec);
        int specSize = MeasureSpec.getSize(measureSpec);

        if(specMode == MeasureSpec.UNSPECIFIED)
        {
            result = 200;
        }
        else
        {
            result = specSize;
        }

        return result;
    }

}


我要对齐的半圈到屏幕的底部。任何想法我该怎么办呢?

I want to align the semi-circle to bottom of screen. Any ideas how I can do it ?

推荐答案

首先,感谢大家对你的答案。你的答案是部分正确。是的,

First of all, thanks all of you for your answers. Your answer is partially correct. Yes, with

android:layout_alignParentBottom="true"

会做一半伎俩。假设我有一个圆圈绘制。在自定义视图,(0,0)再presents不在屏幕的视图的heightest最左边的坐标。并假设一个人想半圈将设在屏幕的thebottom就像我想做的事,统筹猜测原来是一个问题。这是我如何真正解决它。

would do the half trick. Suppose I have a circle to draw. In custom view, (0,0) represents the heightest leftmost co-ordinate of the view, not of the screen. And suppose one wants to half circle to be located at thebottom of screen just as I wanted to do, co-ordinate guessing turns out to be a problem. Here is how I actually solved it.

px = getMeasuredWidth()/2;
py = getMeasuredHeight();

canvas.drawCircle(px, py, radius, paint);

在这里,像素将视整个宽度,鉴于宽度中点的中心, PY 会最后一个屏幕Y轴坐标分配来查看。

Here, px would be the centre of whole width of view, midpoint of view width and py would be the last screen y axis co-ordinate assigned to view.

希望它可以帮助别人了。

Hope it helps somebody else too.

这篇关于调整自定义视图屏幕底部的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆