图像布局无法正常工作

时间:2013-11-28 06:06:39

标签: android xml android-layout imageview

我正在以编程方式设置图像,因此它看起来像圆形但在某些设备中看起来像椭圆形。 我的代码是 -

    int circleLeft = (int) (width * 3.3) / 100;
    circleLayoutParams.setMargins(circleLeft, (int) (height * 0.29),
    circleLeft, (int) (height * 0.18));
    circleMenu.setLayoutParams(circleLayoutParams);

XML -

            <com.example.converter.view.CircleLayout
            android:id="@+id/main_circle_layout"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerHorizontal="true"
            android:layout_gravity="center_horizontal"
            android:background="@drawable/glow_circle"/>

我把图像放在drawable文件夹中。这个代码有什么问题。它的图像大小问题?

1 个答案:

答案 0 :(得分:0)

我在我的应用中遇到了同样的问题。这是因为不同设备的PPI和屏幕尺寸的变化。我通过获取屏幕尺寸来解决它。可以通过以下代码完成: -

//method to get screen size
public ArrayList<Integer> GetDeviceScreenSize()
{
    ArrayList<Integer> size= new ArrayList<Integer>();

    if((android.os.Build.VERSION.SDK_INT >= 13)){

        DisplayMetrics metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        int w = metrics.widthPixels;
        int h = metrics.heightPixels;
        size.add(0,w);
        size.add(1,h);

    }else{
        Display display = ((WindowManager)ctx.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
        int width = display.getWidth();
        int height = display.getHeight();
        size.add(0, width);
        size.add(1,height);
    }
    return size;

}

通过此方法获取设备屏幕大小后,您可以设置从此方法获得的高度和宽度的某些部分的高度和宽度。应该是这样的: -

ArrayList<Integer> size= GetDeviceScreenSize();
float width = (( (float)size.get(0))/320)*135;
int circleLeft = (int) (width * 3.3) / 100;

请记住,你必须尝试将设备的宽度和高度除以不同的单位,以获得你想要的确切尺寸,但一旦你得到它,它将适用于所有设备,无论屏幕是什么大小

希望这会有所帮助。快乐的编码:)