gpt4 book ai didi

android - (Android) 在静态最终常量中保存资源是否安全? (现在资源不是静态最终的)

转载 作者:行者123 更新时间:2023-12-02 02:29:08 24 4
gpt4 key购买 nike

ADT 14 之后,R 类值不再是“static final int”,而只是“static int”。我想使用常量作为“静态最终”。像下面这样

public static final int exampleNameId = R.string.exampleName;

运行应用程序后,如果 Android 系统想要更改 R.string.exampleName 可能会出现问题。因为 exampleNameId 是最终的所以系统无法更改值。

如何解决这个问题?

最佳答案

如果您有任何实现 Shape 接口(interface)的东西(例如 Polygon)。您可以获得该形状的 PathIterator,它提供具有可配置粒度的轮廓

以下示例获取一个展平 PathIterator,以避免处理贝塞尔曲线,而只需使用drawLine 来重现轮廓。由于绘图中没有间隙,因此我不必担心使用实际的迭代器命令来重新定位开始和停止绘图位置(即提笔和落笔等)。

要完全理解这一点,您需要阅读 Java API 文档中的一些方法。


import java.awt.BasicStroke;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.geom.Ellipse2D;
import java.awt.geom.PathIterator;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class Outline extends JPanel {

JFrame frame = new JFrame();
PathIterator iter;

public static void main(String[] args) {
SwingUtilities.invokeLater(() -> new Outline().start());
}

public void start() {
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(this);
setPreferredSize(new Dimension(500, 500));
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
demo();
}

public void demo() {
double smajAxis = 200;
double sminAxis = 100;
Ellipse2D.Double oval = new Ellipse2D.Double(250 - smajAxis / 2,
250 - sminAxis / 2, smajAxis, sminAxis);
iter = oval.getPathIterator(null, .02);
repaint();

}
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2d = (Graphics2D) g;
g2d.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g2d.setStroke(new BasicStroke(2));
double[] start = new double[2];
double[] end = new double[2];
iter.currentSegment(start);
int x1 = (int) start[0];
int y1 = (int) start[1];
int savex1 = x1;
int savey1 = y1;
iter.next();
while (!iter.isDone()) {
iter.currentSegment(end);
int x2 = (int) end[0];
int y2 = (int) end[1];
g2d.drawLine(x1, y1, x2, y2);
x1 = x2;
y1 = y2;
iter.next();
}
g2d.drawLine(x1, y1, savex1, savey1);

}
}

关于android - (Android) 在静态最终常量中保存资源是否安全? (现在资源不是静态最终的),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240531/

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