2012-12-21 27 views
6

Başka bir daire içinde daha küçük bir daire çizmeye çalışıyorum. Oldukça basit görünüyor ama bu konuda bir sorun yaşıyorum ve bir cevap bulamadım.Başka bir şekil içinde daha küçük bir ShapeDrawable nasıl çizilir Programlanabilir bir programa göre

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,}); 

Ama bu hiç bir işe, ne olur daha küçük daire daha büyük daire kadar büyük olur ki: kullanarak kod im olduğunu. Dolayısıyla, gösterilen tek şey, daha büyük olanın büyüklüğüne sahip siyah bir daire. Eğer birileri yardım ederse kendimi aşılarım. Şimdiden teşekkürler.

cevap

18

değiştirme düzeni,

Drawable[] d = {smallerCircle,biggerCircle}; 

LayerDrawable composite1 = new LayerDrawable(d); 

bu

 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); 
gibi cevap

enter image description here

+0

Teşekkür deneyin, ama uğraş ve yine aynı şeyi olur. – Alan

+0

Düzenleme pls bakın, ben için çalışıyorum çalışıyorum – Talha

+0

Bu okuyacak diğer insanlar için sadece küçük daire aslında daha büyük bir daire olduğuna dikkat edin. SetPadding'i daha küçük daire içine kullanıyordum ve başka bir şekilde olmalı. Cevabınız için çok teşekkürler. – Alan

İlgili konular