Android res getIdentifier


之前读取res下的图片,文字,颜色等信息的时候,都是通过类似这样的方式:
getResources().getDrawable(R.drawable.test)
getResources().getColor(R.color.background)...

今天发现一种新的方式,

int id = getActivity().getResources().getIdentifier("dimen_test", "dimen", getActivity().getPackageName());
int id2 = R.dimen.dimen_test);

测试后发现这2个值是一样的,我们又多了一种获取ID的方法。


http://blog.csdn.net/fengye810130/article/details/9314347
http://blog.csdn.net/kmyhy/article/details/6583804


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要实现在 Android 应用中摇骰子功能,可以按照以下步骤进行: 1. 创建一个布局文件,用于显示骰子图片和摇晃的动画效果。 2. 在 Java 代码中,实现加速度传感器监听器,用于监听手机摇晃的动作。 3. 在摇晃动作发生时,随机生成一个骰子面数的数字,并且根据这个数字在布局文件中显示相应的骰子图片。 4. 在布局文件中添加一个按钮,用于手动触发摇骰子动作。 下面是一个简单的示例代码,用于实现摇骰子功能: MainActivity.java ```java public class MainActivity extends AppCompatActivity implements SensorEventListener { private ImageView diceImage; private Animation shakeAnimation; private SensorManager sensorManager; private int lastDiceNumber; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); diceImage = findViewById(R.id.dice_image); shakeAnimation = AnimationUtils.loadAnimation(this, R.anim.shake_animation); sensorManager = (SensorManager) getSystemService(SENSOR_SERVICE); lastDiceNumber = -1; Button rollButton = findViewById(R.id.roll_button); rollButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { rollDice(); } }); } @Override protected void onResume() { super.onResume(); sensorManager.registerListener(this, sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER), SensorManager.SENSOR_DELAY_NORMAL); } @Override protected void onPause() { super.onPause(); sensorManager.unregisterListener(this); } @Override public void onSensorChanged(SensorEvent event) { if (event.sensor.getType() == Sensor.TYPE_ACCELEROMETER) { float x = event.values[0]; float y = event.values[1]; float z = event.values[2]; if (x * x + y * y + z * z >= 3 * 3) { rollDice(); } } } @Override public void onAccuracyChanged(Sensor sensor, int accuracy) { } private void rollDice() { Random random = new Random(); int diceNumber = random.nextInt(6) + 1; while (diceNumber == lastDiceNumber) { diceNumber = random.nextInt(6) + 1; } lastDiceNumber = diceNumber; int drawableId = getResources().getIdentifier("dice_" + diceNumber, "drawable", getPackageName()); diceImage.setImageResource(drawableId); diceImage.startAnimation(shakeAnimation); } } ``` activity_main.xml ```xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/dice_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> <Button android:id="@+id/roll_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:text="Roll" /> </RelativeLayout> ``` shake_animation.xml ```xml <set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_decelerate_interpolator"> <rotate android:duration="100" android:fromDegrees="-5" android:pivotX="50%" android:pivotY="50%" android:repeatCount="5" android:repeatMode="reverse" android:toDegrees="5" /> </set> ``` 这个示例代码实现了一个简单的摇骰子功能,并且添加了手动触发的按钮。当手机发生摇晃动作时,也会自动触发摇骰子动作。可以根据实际需求进行修改和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值