2012-04-19 15 views
6

Ho una classe chiamata SeatsPanel in cui disegno i posti (usando drawRect) nel metodo onDraw. Il metodo onDraw utilizza Canvas come parametro, ma come si imposta la dimensione della tela? Il motivo per cui sto facendo questa domanda è perché questa classe viene gonfiata in un'altra classe. So che la tela ha l'altezza e la larghezza predefinite del telefono, ma ho bisogno di ridurla. Come posso fare questo?Come impostare la dimensione della tela?

Qualsiasi aiuto sarebbe apprezzato.

-Tolga-

+0

Cosa vuoi dire che si vuole fare la tela è più piccola? Normalmente la dimensione della tela è gestita da Android e dipende dalla dimensione misurata della vista. – Greg

+0

Ok, ma come posso cambiare la dimensione della vista? Sono confuso, voglio solo cambiare la dimensione di questa classe. – Xarialon

+0

perché hai bisogno di gonfiarlo? Qualsiasi motivo – UVM

risposta

3

Ho cercato di implementare una semplice applicazione che disegna un rect nero all'interno dell'attività principale, che viene disegnato premendo un pulsante. Ad esempio, nel MainActivity:

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

     } 

    }); 

} 

E nella classe YourView:

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

Il main.xml:

<?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

Mi piace questo, ma purtroppo non risolve il problema che ho adesso. Devo cambiare la dimensione della tela nel metodo onDraw. – Xarialon

+0

Prova questo nuovo metodo ... – Ant4res

+0

Quando utilizzo questo metodo, lo schermo diventa bianco ...:/Non vedo più il contenuto del metodo onDraw. – Xarialon

1

Potrebbe non essere applicabile nel vostro caso, ma questo funziona per me

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

Questo imposta la tela per la dimensione del bitmap

+0

Questo non aiuta, ho bisogno di utilizzare un metodo migliore per risolvere il problema. – Xarialon

Problemi correlati