1

当我在屏幕 4.3 上运行我的应用程序时,它可以正常工作,但是当我在 3.14 屏幕上运行时,图像不能正确显示为大尺寸。

有没有办法使用取决于不同屏幕尺寸的百分比来显示图像?

这是 ImageView 代码:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(200,200 ));
    return imageView;
}
4

4 回答 4

3

我找到了我的答案的解决方案,它接近@dmon 的答案

我在 Values 文件夹中创建了 dimensions.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="width">150dp</dimen>   
<dimen name="height">150dp</dimen>
</resources>

在 imageadapter.java 中

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(mContext);
    imageView.setImageResource(mThumbIds[position]);
    imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
    imageView.setLayoutParams(new GridView.LayoutParams(
            (int) mContext.getResources().getDimension(R.dimen.width),                                                                                   
            (int) mContext.getResources().getDimension(R.dimen.height)));
    imageView.setPadding(5, 5, 5, 5);
    return imageView;
}

感谢大家努力帮助最好的问候

于 2012-09-09T18:37:14.027 回答
1

//注意与屏幕英寸天气相关的是 4' 或 3.2

无论是 ldpi、mdpi、hdpi 还是 xhdpi,它都与屏幕分辨率有关。

final int scaleImage=200;

// Get the screen's density scale
final float scale = getResources().getDisplayMetrics().density;
// Convert the dps to pixels, based on density scale
final int imgSize  = (int) (scaleImage * scale + 0.5f);

// Use imgSize as a distance in pixels...
this 200 will give you a pixel as 


@Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView imageView = new ImageView(mContext);
        imageView.setImageResource(mThumbIds[position]);
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        imageView.setLayoutParams(new GridView.LayoutParams(imgSize,imgSize ));
        return imageView;
    }
  • ldpi - 150 像素
  • mdpi - 200 像素
  • hdpi - 300像素
  • xhdpi- 400像素
于 2012-09-06T14:18:54.617 回答
0

试试这个代码来获取屏幕尺寸

DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);

metrics.heightPixels;
metrics.widthPixels;

或这个

getContext().getResources().getDisplayMetrics().widthPixels
getContext().getResources().getDisplayMetrics().heightPixels
于 2012-09-06T13:45:32.703 回答
0

创建一个dimens.xml 文件:

<resources>
  <dimen name="gridview">200dp</dimen>
</resources>

然后获取该资源:

   int size = mContext.getResources().getDimensionPixelSize(R.dimen.gridview);
   imageView.setLayoutParams(new GridView.LayoutParams(size, size));

您可以阅读文档中的Dimension 资源。

于 2012-09-06T13:46:46.840 回答