2012-12-21 11 views
6

Ich versuche, einen kleineren Kreis innerhalb eines anderen Kreises zu zeichnen. Es scheint ziemlich einfach, aber ich habe Probleme damit und konnte keine Antwort finden. Der Code im mit ist:Wie zeichne ich eine kleinere ShapeDrawable innerhalb einer anderen shapedrawable programmgesteuert

ShapeDrawable biggerCircle= new ShapeDrawable(new OvalShape()); 
    biggerCircle.setIntrinsicHeight(60); 
    biggerCircle.setIntrinsicWidth(60); 
    biggerCircle.setBounds(new Rect(0, 0, 60, 60)); 
    biggerCircle.getPaint().setColor(Color.BLUE); 

    ShapeDrawable smallerCircle= new ShapeDrawable(new OvalShape()); 
    smallerCircle.setIntrinsicHeight(10); 
    smallerCircle.setIntrinsicWidth(10); 
    smallerCircle.setBounds(new Rect(0, 0, 10, 10)); 
    smallerCircle.getPaint().setColor(Color.BLACK); 
    smallerCircle.setPadding(50,50,50,50); 

    LayerDrawable composite1 = new LayerDrawable(new Drawable[] biggerCircle,smallerCircle,}); 

Aber das funktioniert nicht, was passiert ist, dass der kleinere Kreis als die größeren Kreis so groß bekommen. Das einzige, was angezeigt wird, ist ein schwarzer Kreis mit der Größe des größeren Kreises. Ich würde Aprikose, wenn jemand helfen könnte. Danke im Voraus.

Antwort

18

Ändern Sie den Auftrag,

Drawable[] d = {smallerCircle,biggerCircle}; 

LayerDrawable composite1 = new LayerDrawable(d); 

versuchen, wie diese

 ShapeDrawable biggerCircle= new ShapeDrawable(new OvalShape()); 
     biggerCircle.setIntrinsicHeight(60); 
     biggerCircle.setIntrinsicWidth(60); 
     biggerCircle.setBounds(new Rect(0, 0, 60, 60)); 
     biggerCircle.getPaint().setColor(Color.BLUE); 

     ShapeDrawable smallerCircle= new ShapeDrawable(new OvalShape()); 
     smallerCircle.setIntrinsicHeight(10); 
     smallerCircle.setIntrinsicWidth(10); 
     smallerCircle.setBounds(new Rect(0, 0, 10, 10)); 
     smallerCircle.getPaint().setColor(Color.BLACK); 
     smallerCircle.setPadding(50,50,50,50); 
     Drawable[] d = {smallerCircle,biggerCircle}; 

     LayerDrawable composite1 = new LayerDrawable(d); 

     btn.setBackgroundDrawable(composite1); 

enter image description here

+0

Danke für die Antwort, aber ich habe versucht, und es geschieht immer noch das gleiche. – Alan

+0

Schauen Sie sich die Bearbeitung pls an, ich habe versucht, es funktioniert für mich – Talha

+0

Für die anderen Leute, die dies lesen wird nur zahlen, dass der kleinere Kreis tatsächlich der größere Kreis ist. Ich benutzte setPadding für den kleineren Kreis und sollte genau andersherum sein. Vielen Dank für die Antwort. – Alan