У меня есть класс Java, который я обсуждаю, что я должен сделать для моего приложения для Android.Я не уверен, должен ли я сделать это Activity, View или и то, и другое.
Причина, по которой я не уверен, связана с тем, что у него есть конструкторы с параметрами, слушатель компонента и рисование на холсте.,
Чтобы было ясно, при попытке сделать это View, у меня были проблемы с конструктором.Если деятельность, я не уверен, как взаимодействовать между ними (т.е. изменение размера компонента, изменение цвета и т. Д.) - возможно, с Intents?Поэтому, по логике, возможно, лучший способ - это сочетание вида и действия.Я довольно новичок в этом мышлении, поэтому, пожалуйста, имейте это в виду.
Мне интересно, как те, кто создал несколько приложений для Android, решают, какими должны быть ваши предыдущие классы Java.Мой класс кажется, что он может пойти в любую сторону.
Ниже приведена часть моего класса (в 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);
}
}
}
Так что мой вопрос,Вы бы сделали это Activity, которая опирается на View, View или что-то еще?Если это не слишком большая проблема, не могли бы вы объяснить, почему вы делаете это так, как вы упомянули?(если вы разделите его между Activity и View, приведите краткий пример, он не обязательно должен включать мой класс - просто нужно понять концепцию)