这是main.xml文件,它将屏幕分成两半。在下半部分,它具有纬度和经度标签,并且与每个标签相对应,它具有文本框,该文本框将在文本框中显示当前的纬度和经度值。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="@android:color/black" >

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <!-- currently empty -->

    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <!-- Latitude Label -->

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Latitude"
                android:textColor="#FFFFFF" />

            <EditText
                android:id = "@+id/lat1"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginBottom="20dip"
                android:layout_marginTop="5dip"
                android:layout_weight="0.35"
                android:singleLine="true"
                android:textColor="#FFFFFF"
                />
        </LinearLayout>

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal" >

            <!-- Longitude Label -->

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="Longitude"
                android:textColor="#FFFFFF" />

            <EditText
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:layout_marginTop="5dip"
                android:layout_weight="0.35"
                android:singleLine="true"
                android:textColor="#FFFFFF"
                android:id = "@+id/lat2" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>


但是我的问题是-如何在上半部分画一个圆。下面是我在绘画中创建的示例。我需要在上半部分使用画布绘制一个圆。下半部分对我来说很好。


我创建了另一个用于在画布上绘制圆圈的类文件-

public class DrawCanvasCircle extends View{
    public DrawCanvasCircle(Context mContext) {
        super(mContext);
    }
    protected void onDraw(Canvas canvas) {
        super.onDraw(canvas);
        Paint p = new Paint();
        p.setColor(Color.WHITE);
        DashPathEffect dashPath = new DashPathEffect(new float[]{5,5}, (float)1.0);

        p.setPathEffect(dashPath);
        p.setStyle(Style.STROKE);


        for (int i = 0; i < 7; i ++) {
            canvas.drawCircle(100, 100, 50+(i*10), p);
        }


        invalidate();
    }


}


下面是主类,我试图在其中添加我在主类中创建的画布的上方。

    @Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ll = (LinearLayout) findViewById(R.id.lc);
        DrawCanvasCircle pcc = new DrawCanvasCircle (this);
        Bitmap result = Bitmap.createBitmap(25, 25, Bitmap.Config.ARGB_8888);
        Canvas canvas = new Canvas(result);
        pcc.draw(canvas);
        pcc.setLayoutParams(new LayoutParams(1000, 1000));
        ll.addView(pcc);
}


但是它没有被正确显示。我做错了什么。

最佳答案

像这样更改您的customView类

public class DrawCanvasCircle extends View
{
    Context context;

    public DrawCanvasCircle(Context mContext)
    {
        super(mContext);
        context = mContext;
    }

    protected void onDraw(Canvas canvas)
    {
        super.onDraw(canvas);

        Paint paint = new Paint();
        paint.setColor(0xFF0000);
        paint.setAlpha(255);
        paint.setStrokeWidth(2.0f);
        paint.setStyle(Paint.Style.STROKE);
        WindowManager mWinMgr = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
        int displayWidth = mWinMgr.getDefaultDisplay().getWidth();
        int displayHeight = mWinMgr.getDefaultDisplay().getHeight();
        int circleRadius = 100;
        canvas.drawCircle(displayWidth/2, displayHeight/4, circleRadius, paint);
        invalidate();
    }

}


并将下面的代码行写入您的onCreate方法

LinearLayout ll = (LinearLayout) findViewById(R.id.lc);
DrawCanvasCircle pcc = new DrawCanvasCircle (this);
ll.addView(pcc);

10-05 21:17
查看更多