Android 利用getIdentifier()方法获取资源ID

/**
     * 利用getIdentifier()方法获取资源ID
     * 方法描述:
     * getIdentifier(String name, String defType, String defPackage)
     * 第一个参数:资源的名称
     * 第二个参数:资源的类型(drawable,string等)
     * 第三个参数:包名
     */
 
    public class MainActivity extends Activity {
 
        private Context mContext;
 
        private ImageView mImageView;
 
        private TextView mTextView;
 
        @Override
 
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main_activity);
            initUI();
 
        }
 
        private void initUI(){
 
            mContext=this;
            //获取图片资源的ID
            mImageView=(ImageView) findViewById(R.id.imageView);
            int drawableId = mContext.getResources().getIdentifier("ic_launcher","drawable", mContext.getPackageName());
            mImageView.setImageResource(drawableId);
 
            System.out.println("----> 获取到的图片资源 drawableId="+drawableId);
 
 
 
            //获取字符串资源
            mTextView=(TextView) findViewById(R.id.textView);
            int stringId = mContext.getResources().getIdentifier("hello","string", mContext.getPackageName());
            mTextView.setText(stringId);
 
            System.out.println("----> 获取到的字符串资源 stringId="+stringId);
 
        }
 
    }

感觉使用此方法的前提在于 要多次使用一连串的图片,例如表示声音音量的增加,简单的一张图片无需麻烦


class GetIdentifierActivity : AppCompatActivity() {
    private var time = 1
    /**
     * 进行七张图片的轮流展示v1-v7
     */
    private val mhandler: Handler = object : Handler() {
        override fun handleMessage(msg: Message?) {
            super.handleMessage(msg)
            var mipmapId = resources.getIdentifier("v" + msg?.what, "mipmap", packageName)
            mGetIdentifierIv.setImageResource(mipmapId)
            time++
            if (time == 7) time = 1
            sendEmptyMessageDelayed(time, 1000)//继续延迟1秒发送消息让Handler继续执行 形成循环
        }
    }
    /**
     * kotlin 中 Handler 简写
     */
    private val mHandler2 = Handler {
        var mipmapId = resources.getIdentifier("v" + it?.what, "mipmap", packageName)
        mGetIdentifierIv.setImageResource(mipmapId)
        time++
        if (time == 7) time = 1
        it.target.sendEmptyMessageDelayed(time, 1000)//继续延迟1秒发送消息让Handler继续执行 形成循环
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_get_identifier)
        //  mhandler.sendEmptyMessageDelayed(time, 1000)//继续延迟1秒发送消息让Handler继续执行 形成循环
        mHandler2.sendEmptyMessageDelayed(time, 1000)//继续延迟1秒发送消息让Handler继续执行 形成循环
    }

    override fun onDestroy() {
        super.onDestroy()
        mhandler.removeCallbacksAndMessages(null)
    }
}

 

你可能感兴趣的:(Android使用技巧)