2017-02-17 4 views
1

Je souhaite dessiner un rectangle à l'écran. Mais je ne cours pas de programme. Parce que, j'écris un mauvais code. Par conséquent, je n'écris pas MainActivity ci-dessous. Pouvez-vous m'aider à utiliser la méthode onDraw?A propos de la méthode onDraw

Cordialement.

MainActivity.java

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


} 

}

Deneme.java

public class Deneme extends View { 

Paint myPaint; 

public Deneme(Context context) { 
    super(context); 

    myPaint = new Paint(); 
    myPaint.setColor(Color.BLACK); 
    myPaint.setStyle(Paint.Style.FILL); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    Rect ourRect = new Rect(); 
    ourRect.set(0,0,canvas.getWidth(),canvas.getHeight()/2); 
    canvas.drawRect(ourRect,myPaint); 
} 

}

Répondre

0

Vous pouvez essayer ceci:

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Color; 
import android.graphics.Paint; 
import android.graphics.Rect; 
import android.view.View; 

public class Deneme extends View { 

    private Rect mRectangle; 
    private Paint mPaint; 

    public Deneme(Context context) { 
     super(context); 
     int x = 50; 
     int y = 50; 
     int sideLength = 200; 

     // create a rectangle that we'll draw later 
     mRectangle = new Rect(x, y, sideLength, sideLength); 

     // create the Paint and set its color   
     mPaint = new Paint(); 
     mPaint.setColor(Color.GRAY); 
    } 

    @Override 
    protected void onDraw(Canvas canvas) { 
     canvas.drawColor(Color.BLUE); 
     canvas.drawRect(mRectangle, mPaint); 
    } 

} 

Manière rapide

Et votre activité:

import android.support.v7.app.AppCompatActivity; 


public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(new Deneme(this)); 
    } 

} 

vous pouvez aussi essayer cette façon élégante:

Dans votre mise en page activity_main:

<?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:id="@+id/activity_main_relative_layout" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    tools:context="com.package.RectangleActivity"> 

</RelativeLayout> 

Dans votre Activité:

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.widget.LinearLayout; 
import android.widget.RelativeLayout; 

import com.package.Deneme; 
import com.package.R; 

public class MainActivity extends AppCompatActivity { 

    private RelativeLayout mRelativeLayout; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     //add RelativeLayout 
     mRelativeLayout =(RelativeLayout) findViewById(R.id.activity_main_relative_layout); 

     //add LayoutParams 
     RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); 

     Deneme rectangle = new Deneme(this); 
     rectangle.setLayoutParams(params); 
     mRelativeLayout.addView(rectangle); 

    } 
} 

You'll find the supporting medium article!!! et cet exemple dans GitHub

+1

I Je vous remercie. Le code fonctionne. :) –

0

si vous voulez dessiner un rectangle utilisez ce code

public class Deneme extends View { 

Paint myPaint; 

public Deneme(Context context) { 
    super(context); 
    init(); 


} 

public Deneme(Context context, AttributeSet attributeSet) 
{ 
    super(context,attributeSet); 
    init(); 
} 

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    Rect ourRect = new Rect(); 
    ourRect.set(0,0,canvas.getWidth(),canvas.getHeight()/2); 
    canvas.drawRect(ourRect,myPaint); 
} 

public void init() 
{ 
    myPaint = new Paint(); 
    myPaint.setColor(Color.BLACK); 
    myPaint.setStyle(Paint.Style.FILL); 
} 
} 

utiliser cette classe lors de la conception de votre fichier XML et le rectangle apparaîtrait