android开发分享如何在Android中按名称访问可绘制资源

在我的应用程序中,我需要在某些不想保留引用R位置绘制一些位图。 所以我创build了一个DrawableManager类来pipe理drawable。

 public class DrawableManager { private static Context context = null; public static void init(Context c) { context = c; } public static Drawable getDrawable(String name) { return R.drawable.? } } 

然后我想在这个地方得到可绘制的名字(car.png放在res / drawables里面):

 Drawable d= DrawableManager.getDrawable("car.png"); 

但是,正如您所看到的,我无法通过名称访问资源:

 public static Drawable getDrawable(String name) { return R.drawable.? } 

任何替代品?

    请注意,您的方法几乎总是做错事情的方法(最好是将上下文传递到使用drawable的对象本身,而不是保持静态Context某处)。

    鉴于此,如果你想做dynamic可绘制加载,你可以使用getIdentifier :

     Resources resources = context.getResources(); final int resourceId = resources.getIdentifier(name, "drawable", context.getPackageName()); return resources.getDrawable(resourceId); 

    你可以做这样的事情。

     public static Drawable getDrawable(String name) { Context context = YourApplication.getContext(); int resourceId = context.getResources().getIdentifier(name, "drawable", YourApplication.getContext().getPackageName()); return context.getResources().getDrawable(resourceId); } 

    为了从任何地方访问上下文,你可以扩展Application类。

     public class YourApplication extends Application { private static YourApplication instance; public YourApplication() { instance = this; } public static Context getContext() { return instance; } } 

    并将其映射到您的Manifest application标签中

     <application android:name=".YourApplication" .... 

    修改图片内容:

    以上就是android开发分享如何在Android中按名称访问可绘制资源相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。

      ImageView image = (ImageView)view.findViewById(R.id.imagenElement); int resourceImage = activity.getResources().getIdentifier(element.getImageName(), "drawable", activity.getPackageName()); image.setImageResource(resourceImage); 

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/addevelopment/513825.html

      (0)
      上一篇 2020年11月29日
      下一篇 2020年11月29日

      精彩推荐