gpt4 book ai didi

java - Android View 或 Activity ?

转载 作者:行者123 更新时间:2023-11-29 06:10:49 25 4
gpt4 key购买 nike

我有一个 Java 类,我正在讨论我应该为我的 Android 应用程序制作什么。我不确定是否应该将其设为 Activity、View 或两者兼而有之。

我不确定的原因与它具有带参数的构造函数、组件监听器和在 Canvas 上绘制有关。

需要说明的是,在尝试将其设为 View 时,我在构造函数方面遇到了问题。如果是一项 Activity ,我不确定如何在两者之间进行交互(即调整组件大小、更改颜色等)——也许是通过 Intents?所以从逻辑上讲,也许最好的方法是 View 和 Activity 的混合。我对这种想法很陌生,所以请记住这一点。

我想知道那些已经创建了一些 Android 应用程序的人如何确定您以前的 Java 类应该是什么。我的类(class)似乎可以采用任何一种方式。

下面是我的类(class)的一部分(在 Java 中,但我也将它转换为 Android):

public class GraphDisplay extends JPanel implement Serializable {

public static final int BLUE_RED = 0;
public static final int BLACK_WHITE = 1;

protected int displayBoard;
protected int centerXcoord;
protected int centerYcoord;

private GeneralPath circlePath;
private GeneralPath rectPath;

private Color triangleColor;
private Color rectColor;

/*
* Create an instance of GraphDisplay using the default
* blue/red display
*/
public GraphDisplay() {
this(BLUE_RED, 0);

}

/*
* Create an instance of GraphDisplay using the board value
* and index of 0. Throws exception if model isn't a
* prederfined value
*/
public GraphDisplay(int board) {
this(model, 0);

}



public GraphDisplay(int board, int index) throws IllegalArgumentException {
if(board == BLUE_RED || board == BLACK_WHITE) {
displayBoard = board;
this.index = index;

if(displayBoard == BLUE_RED) {
setBackground(Color.blue);
triangleColor = Color.red;
rectColor = Color.red;
} else {
setBackground(Color.black);
triangleColor = Color.white;
rectColor = Color.white;
}

compListener = new GraphListener();
addGraphListener(compListener);

mListener = new GraphMouseListener();
addMouseMotionListener(mListener);

trianglePath = new GeneralPath();
rectPath = new GeneralPath();

setMinimumSize(new Dimension(400, 400));
setPreferredSize(new Dimension(400,400));

} else {
throw new IllegalArgumentException("Improper model")
}
}


protected void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = (Graphics2D)g;

centerXcoord = getWidth() / 2;
centerYcoord = getHeight() / 2;

drawTriangle(g2);
drawCircle(g2);

}

private void drawTriangle(Graphics2D g2) {
//code for drawing triangle with lines
}

private void drawRectangle(Graphics2D g2) {
//code for drawing circle
}

public void setTriangleColor(Color color) {
triangleColor = color;
repaint();
}

public Color getTriangleColor() {
return triangleColor;
}

//Omitted other getters/setter for brevity.
//The above get/set methods are a variety of what the class entails

protected class GraphMouseMotionListener extends MouseMotionAdapter {
public void mouseMoved(MouseEvent me) {
int x = mouseEvent.getX();
int y = mouseEvent.getY();

//if in component display message
}
}

protected class GraphComponentListener extends ComponentsAdapter {
public void componentResized(ComponentEvent ce) {
super.componentResized(ce);
}
}


}

所以我的问题是,你会把它做成一个在 View 、 View 或其他东西上绘制的 Activity 吗?如果不是太麻烦,您能否详细说明为什么要按照您提到的方式进行操作? (如果将它拆分为 Activity 和 View,您能否提供一个简短的示例,它不必涉及我的类(class) - 只是想了解这个概念)

最佳答案

您将使用一个 Activity,它可以使用您在 xml 文件中创建的 View ,方法是为您的类扩展 Activity,然后在 onCreate 你说的方法 setContentView(R.layout.your_view);

例如:

您的 Activity 类别:

public class YourClass extends Activity {

private Button exampleButton;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

exampleButton = (Button)findViewById (R.id.myButton);

exampleButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(YourClass.this, "I did something", Toast.LENGTH_SHORT).show();
}
});
}
}

您的 XML View :

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

<TextView android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Hello World" />

<Button android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>

所以 XML 是您定义 View 的地方,其中包含哪些组件,它的布局方式等等。

Activity 类是您将 View 变为现实并添加功能等的地方。您还可以通过编程方式将组件添加到您的 View 中,但我现在不会深入探讨。

然后您可以查看叠加层(一些示例是 map 叠加层,以查看它们如何在 Activity 中的 Canvas 上绘制)以获得想法,然后将其应用到您的情况中。例如:http://code.google.com/android/add-ons/google-apis/reference/com/google/android/maps/ItemizedOverlay.html

希望对您有所帮助。

关于java - Android View 或 Activity ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6932385/

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