java如何在活动中创建视图?
我的目标是在移动屏幕中心创建一个简单的球,这样我就可以在他们拖动我的手指时在屏幕上移动它
为此,我想使用画布和位图(我不知道这是否是最好的方式,因为我已经说过我是Android世界的新手)
我在我的活动中创建了一个函数,这样当单击一个按钮时,就会创建一个包含画布设计脚本的活动(同样,我不知道这是否是最好的方法。在php脚本或javascript中,我会在函数本身中创建球)。我的代码如下:
public void StartGame(View v) {
Intent i = new Intent(MainActivity.this, ball.class);
startActivity(i);
}
通过这样做,它应该调用以下活动:
com.teste package;
import 安卓.content.Context;
import 安卓.graphics.Canvas;
import 安卓.graphics.Color;
import 安卓.graphics.Paint;
import 安卓.util.AttributeSet;
import 安卓.view.View;
public class ball extends View {
Paint pincelPreto private;
Paint pincelAmerelo private;
Public ball (Context context) {
super (context);
}
Public ball (Context context, attributeSet attrs) {
super (context, attrs);
setBackgroundColor (Color.LTGRAY);
pincelPreto = new Paint ();
pincelPreto.setColor (Color.BLACK);
pincelAmerelo = new Paint ();
pincelPreto.setColor (Color.YELLOW);
setFocusable (true);
}
@Override
protected void onDraw (Canvas canvas) {
super.onDraw (canvas);
canvas.drawCircle (200, 200, 200, pincelAmerelo);
}
}
两人在每个位置都抽一个球。。。 但我得到了以下错误:
安卓。所容纳之物ActivityNotFoundException:找不到显式活动类{com.teste/com.teste.ball};您是否已在AndroidManifest中声明此活动。xml
我做错了什么
注意事项:我可能叫活动,因为我不知道它的真名
# 1 楼答案
根据Neo的上述回答展开讨论,并给出您经过编辑的问题:
你得到安卓系统的原因。所容纳之物ActivityNotFoundException是因为“ball”是一个视图,而不是一个活动,所以不能将“ball”作为活动启动
因为你是Android新手,试着把一个活动想象成一个通常占据整个屏幕的组件,把一个视图想象成一个较小的部分。你希望你的球在你的活动中显示
在
res/layout
文件夹中,应该有一个用于MainActivity的布局xml文件。您可以使用一些xml在此处添加球视图,如下所示:一旦你做到了这一点,你可能会遇到其他问题,但是调试起来应该更容易
我同意上面的评论,在开始一个复杂的应用程序之前先学习基础知识。看看Android开发者页面,了解组件并尝试简单的教程。Android应用程序由许多组件组成,充分理解它们以及它们之间的交互方式将使您的生活变得更轻松:)。祝你好运,欢迎来到Android
编辑以回答下面的问题。。。我能用java做吗?“我不知道什么是正确的观点吗?”
是的,您可以使用addView将视图添加到活动的父布局中。Inflate用于将XML中的视图实例化为Java对象,因此它在您的情况下不起作用,因为您没有用于球布局的XML文件。您需要创建一个新的Ball对象,并使用addView将其添加到布局中:
其中layout是在活动的XML中找到的父布局。如果还没有,您可能需要为其分配一个ID,因此如果我们使用上面的示例,您的LinearLayout标记将如下所示:
# 2 楼答案
正如其他人所指出的,
Ball
扩展了View
,这不是Activity
。要使用startActivity()
方法,需要向其传递一个Activity
。首先创建BallView
:然后创建一个
BallActivity
。这包括一个Java类和一个放在res/layout/activity_ball.xml
下的XML资源。下面是一个示例XML资源:和
BallActivity
类:启动
BallActivity
需要做的最后一件事是将其添加到AndroidManifest.xml
(否则您将继续得到ActivityNotFoundException
):希望这有帮助
# 3 楼答案
如果要创建活动,则需要按活动类对其进行扩展。通过扩展视图,您可以创建一个自定义视图,可以在xml中使用,也可以在活动或片段中动态使用。例如ImageView、TextView、EditText、All layouts extends View,您可以通过xml或动态方式在活动或片段中使用它们