Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/image-processing/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中画一个圆_Android - Fatal编程技术网

在android中画一个圆

在android中画一个圆,android,Android,我学习android已经一周了。我正在写一个简单的程序,画一个圆圈。但是当我运行它时,它告诉我程序已经停止了。我一遍又一遍地读代码,但找不到错误。你能帮帮我吗 package org.example.viewwithlines; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.content.Conte

我学习android已经一周了。我正在写一个简单的程序,画一个圆圈。但是当我运行它时,它告诉我程序已经停止了。我一遍又一遍地读代码,但找不到错误。你能帮帮我吗

package org.example.viewwithlines;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
public class MainActivity extends Activity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    static public class GraphicsView extends View 
    {
        Paint p;
        public GraphicsView(Context context) {
        super(context);
        p=new Paint();
        p.setColor(Color.MAGENTA);
        }
        @Override
        protected void onDraw(Canvas canvas) {
            canvas.drawCircle(30, 40, 10, p);   
        }
        }
}
这是xml文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <org.example.viewwithlines.MainActivity.GraphicsView
    android:id="@+id/graphics" android:layout_width="fill_parent" android:layout_height="fill_parent"/>

</LinearLayout>

扩展视图时,需要向其添加不同的构造函数,以使其在不同的环境中工作。在xml中使用视图时,它使用包含
AttributeSet
的构造函数

尝试添加一个如下所示的:

    public GraphicsView(Context context, AttributeSet attribs) {
        super(context, attribs);
        p=new Paint();
        p.setColor(Color.MAGENTA);
    }
有关更详细的说明,请参见

另外,您正在尝试引用xml中的内部类。这样做时,必须使用
$
而不是
。问题是,
$
在xml标记名中是非法字符,因此您必须执行以下操作:

<view class="org.example.viewwithlines.MainActivity$GraphicsView" 
    ...
    attribs here
    ... />

很难说它不起作用的确切原因。我至少看到两个原因

  • 布局中的类名错误。由于
    GraphicsView
    是一个嵌套类,因此它应该是
    org.example.viewwithlines.main活动$GraphicsView

    <view
        class="org.example.viewwithlines.MainActivity$GraphicsView"
        android:id="@+id/graphics" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent"/>
    

  • 你想干什么

    对于背景和一般用途,只需创建可绘制资源并将其设置为方形视图即可:

    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" >
        <solid android:color="#FF0000"/>
    </shape>
    
    
    
    请添加logcat输出,显示它编译的异常,但当我在模拟器上运行它时,它会告诉我应用程序已停止。当你在模拟器上运行程序时,应该有一个显示异常的日志。此日志称为logcat。你能找到这个日志并粘贴它在程序崩溃时显示的内容吗?03-08 17:14:33.751:E/AndroidRuntime(612):在android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
    <?xml version="1.0" encoding="utf-8"?>
    <shape xmlns:android="http://schemas.android.com/apk/res/android"
        android:shape="oval" >
        <solid android:color="#FF0000"/>
    </shape>