我正在以编程方式设置图像,因此它看起来像圆形但在某些设备中看起来像椭圆形。 我的代码是 -
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文件夹中。这个代码有什么问题。它的图像大小问题?
答案 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;
请记住,你必须尝试将设备的宽度和高度除以不同的单位,以获得你想要的确切尺寸,但一旦你得到它,它将适用于所有设备,无论屏幕是什么大小
希望这会有所帮助。快乐的编码:)