2016-11-11 134 views
0

到目前为止,我使用此代码基于字符串值添加自定义ImageViews屏幕密度绘制资源ID:获取基于使用字符串

RelativeLayout rl_dashboard = (RelativeLayout) mView.findViewById(R.id.rl_dashboard); 
      for (int i = 0; i < imageResIDs.size(); i++) { 
       int drawableResourceId = mActivity.getResources().getIdentifier(imageResIDs.get(i), "drawable", mActivity.getPackageName()); 
       ImageView imageView = new ImageView(mActivity); 
       imageView.setImageDrawable(ContextCompat.getDrawable(mActivity, drawableResourceId)); 
       rl_dashboard.addView(imageView); 
      } 

但是这一点,因为我想,给我的最高解析度可绘制,这是xxxdpi atm。有什么办法可以拉出特定密度的drawable吗?

我使用的检查密度:

DisplayMetrics metrics = new DisplayMetrics(); 
     mActivity.getWindowManager().getDefaultDisplay().getMetrics(metrics); 
     switch(metrics.densityDpi){ 
      case DisplayMetrics.DENSITY_LOW: 
       break; 
      case DisplayMetrics.DENSITY_MEDIUM: 
       break; 
      case DisplayMetrics.DENSITY_HIGH: 
       break; 
      case DisplayMetrics.DENSITY_XHIGH: 
       break; 
      case DisplayMetrics.DENSITY_XXHIGH: 
       break; 
      case DisplayMetrics.DENSITY_XXXHIGH: 
       break; 
     } 

我会拉起资源之前访问我的静态值。

谢谢!

回答

0

原因ImageViews尺寸不对,是我已经添加了缺少LayoutParams

imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));