2016-04-26 4 views
0

Ich versuche, einen Kreis zu zeichnen, die den gleichen Durchmesser von 2,5 Zoll (oder einen anderen Wert) in jedem Android-Gerät haben wird, unabhängig von der Bildschirmgröße. Die Durchmessergröße muss bei allen Geräten gleich sein und unten ist was ich versucht habe.Wie zeichne ich einen Kreis auf verschiedenen Bildschirmen (Geräte) mit gleichem Durchmesser in Android

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:background="@drawable/light" 
    tools:context=".MainActivity"> 

    <ImageView 
     android:layout_width="3in" 
     android:layout_height="3in" 
     android:src="@drawable/oval_shape" 
     android:id="@+id/imageView" 
     android:scaleType="matrix"/> 

</RelativeLayout> 

oval_shape.xml

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 

    <solid 
     android:color="#666666"/> 

    <size 
     android:width="2.5in" 
     android:height="2.5in"/> 
</shape> 

Das Problem mit diesem Code ist, wenn ich es mit 4,5 in Bildschirm (real Telefon) versuchen, der Durchmesser 2.5inches wie erwartet, aber beim Test in 4-Zoll-Bildschirm ist der Durchmesser weniger als 2,5 Zoll, es hat einen kleinen Unterschied. Ich habe es auch mit Millimeter (mm) versucht, aber es hat auch nicht gut funktioniert.

Also wie kann ich die Anforderung der gleichen Größe Kreis in jedem Telefon erreichen?

+0

Sie können ['DisplayMetrics'] (http://developer.android.com/reference/android/util/DisplayMetrics.html)' xdpi' und 'ydpi' verwenden, um die richtige Anzahl an Pixeln für Ihr gewünschtes Objekt zu berechnen Größe. –

+0

@ElliottFrisch: - Können Sie mir ein Codebeispiel geben? – Barrier

+0

Haben Sie 'dp' probiert? – Max

Antwort

-1

// Sie verwenden fixe statische Größe in oval_shape.xml für alle Bildschirme. Deshalb variiert es für verschiedene Bildschirme. können Sie dies in Dimens verwenden. // diesen Code in oval_shape.xml verwenden

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="oval"> 

    <solid 
     android:color="#666666"/> 

    <size 
     android:width="@dimen/inch_size" 
     android:height="@dimen/inch_size"/> 
</shape> 

// und Sie können in

setzen dimens.xml
1) values-xlarge 

2) values-small 

3) values-normal 

4) values-large 

And give different sizes in dimens.xml within corresponding folders according to densities. 

// wie 2,5 Zoll in der normalen, 1,5x des Normalwertes in Groß (bedeutet 3.75in), 2x des Normalwerts in xlarge (Mittel 5in), .75x von normalen in kleinen (bedeutet 1.875in ca.)

// hoffen, dass es für Sie hilfreich sein können.

+0

Dimensionen können nicht auf Leinwand verwendet werden! – GensaGames

+0

Ja, Sie können Dimen für Leinwand verwenden versuchen Sie es. –

+0

Also in Ihrer Antwort geben Sie wieder verschiedene Größen für verschiedene Geräte. Ich brauche überall 2,5. – Barrier

Verwandte Themen