R.drawable.image返回什么?

时间:2017-05-27 07:21:30

标签: java android

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final ImageView ballDisplay = (ImageView)findViewById(R.id.image_eightBall);

        final int[] ballArray = {R.drawable.ball1,
                R.drawable.ball2,
                R.drawable.ball3,
                R.drawable.ball4,
                R.drawable.ball5};//*******What integer is that???????????

        Button myButon = (Button)findViewById(R.id.askButton);
        myButon.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Random randomNumberGenerator = new Random();
                int number = randomNumberGenerator.nextInt(5);
                ballDisplay.setImageResource(ballArray[number]);
            }
        });
    }
}

该intger中存储的值是什么?

5 个答案:

答案 0 :(得分:1)

R.drawable.image存储一个将返回int的资源ID。

答案 1 :(得分:1)

R.drawable.image表示可绘制资源,在本例中为image。 Drawable意味着可以绘制的图形。每个drawable都存储在res / drawable文件夹中。你的ballArray是一系列drawables。

答案 2 :(得分:1)

您的Drawables数据类型不是int;你对它的引用是一个int,你可以在R.java中看到。

final int[] ballArray = 
           {R.drawable.ball1,
            R.drawable.ball2,
            R.drawable.ball3,
            R.drawable.ball4,
            R.drawable.ball5};

所以这里你只存储参考。

答案 3 :(得分:1)

你可能真的不需要知道R.drawable.ball5的实际值,因为它是在构建期间确定的......但我不会再猜测你的问题 - {{1的实际值可以在构建期间创建的构建文件夹中的文件R.drawable.ball5中找到。

要在Android Studio中找到它,在完成构建后,您可以右键单击编辑器中的R.java,然后转到 - >实现,您将看到生成的R.drawable.ball5文件以及为此构建分配给此资源的编号。它看起来像:

R.Java

以编程方式,您只需记录public static final int ball5=0x7f080093;

这就是你问的问题的答案。但我认为你最好看Integer.toString(R.drawable.ball5)例如明确命名资源或通过名称“ball5”引用drawable并用该变量名称引用它。您不应该真正关心R.id.ball5实际上是什么值,因为它可能会随着您添加或删除其他资源而发生变化。

这样的事情可能会更好,因为我可以猜到你想要做什么:

R.drawable.ball5

如果您想使用支持旧API的方法获取drawable,请尝试:

   public void onClick(View v) {
            Random randomNumberGenerator = new Random();
            int number = randomNumberGenerator.nextInt(5);
            ballDisplay.setImageDrawable(this,
                   getDrawable(ballArray[number]));
            }

答案 4 :(得分:0)

没有必要知道它返回的值是什么,因为你已经知道如何访问它,而且,你最初无法知道它,因为这个值是在构建时确定的,所有你在开始时都知道的是它是十六进制的数字 如果您想在构建完成后知道,请转到R.java文件,您将找到它。