2012-04-19 31 views
6

OnDraw yönteminde koltuk (drawRect kullanarak) çizdiğim SeatsPanel adlı bir sınıfım var. OnDraw yöntemi Tuvali bir parametre olarak kullanır, ancak Tuval boyutunu nasıl belirlersiniz? Bu soruyu sormamın nedeni, bu sınıfın başka bir sınıfta şişirilmiş olmasından kaynaklanmaktadır. Tuvalin varsayılan yükseklik ve telefon genişliğine sahip olduğunu biliyorum, ancak daha küçük yapmam gerekiyor. Bunu nasıl yapabilirim?Tuval boyutu nasıl ayarlanır?

Herhangi bir yardım için teşekkür ederiz.

-Tolga-

+0

tuval daha mı küçük? Normalde, tuval boyutu Android tarafından yönetilir ve Görünüm'ün ölçülen boyutuna bağlıdır. – Greg

+0

Tamam, ancak Görünümün boyutunu nasıl değiştiririm? Kafam karıştı, sadece bu sınıfın büyüklüğünü değiştirmek istiyorum. – Xarialon

+0

neden şişirmek gerekiyor? Herhangi bir nedenle – UVM

cevap

3

bitmap büyüklüğüne tuval setleri

Bitmap animation = BitmapFactory.decodeResource(mContext.getResources(), resourceId, mBitmapOptions); //Get a bitmap from a image file 

// Create a bitmap for the part of the screen that needs updating. 
Bitmap bitmap = Bitmap.createBitmap(animation.getWidth(), animation.getHeight(), BITMAP_CONFIG); 
bitmap.setDensity(DisplayMetrics.DENSITY_DEFAULT); 
Canvas canvas = new Canvas(bitmap); 

benim için çalışıyor olmasa gerek Ana faaliyet içinde siyah rect çeken, bir düğmeye basan basit bir uygulama yapın. Örneğin, MainActivity içinde:

private Button button1; 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    button1=(Button)findViewById(R.id.button); 
    button1.setOnClickListener(new OnClickListener(){ 

      public void onClick(View v) { 
      switch(v.getId()){ 
       case R.id.button: 

        LinearLayout ll=(LinearLayout)findViewById(R.id.linearLayout1); 
        System.out.println(ll.getWidth()+" "+ll.getHeight()); 
        LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(ll.getWidth(),ll.getHeight()); 
        YourView yourView = new YourView(getBaseContext()); 
        yourView.setBackgroundColor(Color.WHITE); 
        ll.addView(yourView,params); 
        break; 
      } 

     } 

    }); 

} 

Ve YourView sınıfında:

private Bitmap savedBitmap; 
public YourView(Context context) { 
    super(context); 
} 
public void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    System.out.println(canvas.getWidth()+" "+canvas.getHeight()); 

    Paint textPaint = new Paint(); 
    textPaint.setARGB(255, 0, 0, 0); 
    textPaint.setTextAlign(Paint.Align.RIGHT); 
    textPaint.setTextSize(11); 
    textPaint.setTypeface(Typeface.DEFAULT); 

    canvas.drawColor(Color.WHITE); 
    System.out.println(canvas.getWidth()); 
    System.out.println(canvas.getHeight()); 

    canvas.drawRect(200, 20, 500, 100, textPaint); 
} 

main.xml: Eğer yapmak istiyorum demek ne

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
android:orientation="vertical" > 

<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="Push the button and draw a Rect" /> 

<Button 
    android:id="@+id/button" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:text="Button" /> 




<LinearLayout 
    android:id="@+id/linearLayout1" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

</LinearLayout> 

+0

Bunu beğendim, ama ne yazık ki şu an sahip olduğum problemi çözmüyor. OnDraw yöntemindeki tuval boyutunu değiştirmem gerekiyor. – Xarialon

+0

Bu yeni yöntemi deneyin ... – Ant4res

+0

Bu yöntemi kullandığımda, ekran beyaza döner ...:/Artık onDraw yönteminin içeriğini göremiyorum. – Xarialon

1

sizin durumunuzda geçerli olabilir, ama bu Bu benim çalıştığım

+0

Bu yardımcı olmaz, sorunu çözmek için daha iyi bir yöntem kullanmam gerekiyor. – Xarialon

İlgili konular