gpt4 book ai didi

java - 在经典在线教程中找到正确的文件来构建 Android 项目

转载 作者:数据小太阳 更新时间:2023-10-29 02:39:42 25 4
gpt4 key购买 nike

我在本教程的第 7 周遇到问题,https://web.stanford.edu/class/cs193a/lectures.shtml .在第 7 周,当我在 Android Studio 上运行构建时,只有 .java 文件显示有问题。

我是否需要 xml 文件?为什么不能显示它们,因为在前几周还显示了 xml 文件。

我打开了 Targets 应用程序的 zip 文件,在 Targets/app/src/main/res/layout 中找到了以下 xml 文件,

<RelativeLayout
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:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".TargetsActivity">

<com.example.stepp.targets.TargetsView
android:layout_width="match_parent"
android:layout_height="match_parent" />

</RelativeLayout>

但是当我将它复制到粘贴 .java 文件、ExampleView.java 和 TargetsView.java 的项目中时,

 /*
* CS 193A, Winter 2015, Marty Stepp
* This class is a graphical view of a basic example of 2D graphics.
*/

package com.example.stepp.targets;

import android.content.Context;
import android.graphics.*;
import android.util.AttributeSet;
import android.view.View;

public class ExampleView extends View {
public ExampleView(Context context, AttributeSet attrs) {
super(context, attrs);
}

/*
* This method draws some shapes and text on the view.
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

canvas.drawARGB(255, 255, 90, 90);

Paint aqua = new Paint();
aqua.setARGB(255, 0, 80, 220);

canvas.drawRect(new RectF(10, 30, 300, 700), aqua);
canvas.drawOval(new RectF(400, 50, getWidth(), getHeight()), aqua);

Paint font = new Paint();
font.setARGB(255, 0, 0, 0);
font.setTypeface(Typeface.create(Typeface.SERIF, Typeface.BOLD_ITALIC));
font.setTextSize(40);

canvas.drawText("CS 193A is great", 80, 200, font);
}
}

    /*
* CS 193A, Winter 2015, Marty Stepp
* This class is a graphical view of a drawing of a red/white target figure.
*/

package com.example.stepp.targets;

import android.content.Context;
import android.graphics.*;
import android.util.AttributeSet;
import android.view.View;

public class TargetsView extends View {
public TargetsView(Context context, AttributeSet attrs) {
super(context, attrs);
}

/*
* This method draws the target oval shapes on the view.
*/
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);

Paint red = new Paint();
red.setARGB(255, 255, 0, 0);

Paint white = new Paint();
white.setARGB(255, 255, 255, 255);

int w = getWidth();
int h = getHeight();

for (int i = 0; i < 5; i++) {
canvas.drawOval(new RectF(w*i/10, h*i/10, w*(10-i)/10, h*(10-i)/10), (i % 2 == 0 ? red : white));
}
}
}

我不明白为什么这不起作用,因为同样的方法在最初几周起作用。非常感谢您的帮助。我也不明白为什么需要两个不同的 Activity ExampleView 和 TargetsView。

我在本教程的后几周遇到了同样的问题,因为我看不到在哪里可以找到正确的 java 和 xml 文件。

这个问题对于那些遵循这个关于 android 应用程序开发的著名教程的人来说似乎是一个常见的错误

最佳答案

尝试使用整个 Targets.zip。

问题中包含的两个类是类 extends View .它们只是 UI 组件,不会自行发生任何事情。

这两个类可以包含在布局 xml 中或由 Activity 类使用(以编程方式构建)。正如您在找到的布局 xml 中所见,它包含一个名为 <com.example.stepp.targets.TargetsView ... /> 的标签。 ,这意味着这个布局里面会有一个 TargetView。

Activity 类实际上是协调 UI 组件和逻辑的类。在你的 Targets.zip 中,你有一个 TargetsActivity.java同样,这是一个 Acitivity 类。它试图获取 R.layout.activity_targets并通过调用 setContentView(...) 将其设置为内容 View 在onCreate()方法。

最后你有 AndroidManifest.xml在 src/main.你可以在<activity ...> ... </activity>中看到节点,TargetsActivity 被指定为启动器 Activity ,这意味着当应用程序启动时,此 Acitivity 类将是第一个启动的 Activity 。

关于java - 在经典在线教程中找到正确的文件来构建 Android 项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34123772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com