2016-12-25 7 views
0

Я нашел очень мало учебников о том, как использовать андроид-холст. Однако, посмотрев официальную документацию, я смог создать этот код. Я просто хотел бы нарисовать зеленый прямоугольник.Android canvas not drawing

public class LevelActivity extends AppCompatActivity { 

    Object shape; 
    Target target; 

    Rect r; 
    Paint paint; 

    Bitmap b = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888); 
    Canvas c = new Canvas(b); 

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

     paint = new Paint(); 
     paint.setColor(Color.GREEN); 
     paint.setStyle(Paint.Style.FILL); 

     r = new Rect(); 
     r.set(0,0,c.getWidth(),c.getHeight()/2); 

     c.drawRect(r,paint); 

     shape = new Shape(30,10); //Object setup 
     //shape.pick(); //Pick random point for target 
    } 

} 

Я не хочу использовать customView для рисования, я просто хочу использовать чистый андроидный холст. Когда я запускаю код, я не получаю никаких ошибок или никаких предупреждений.

Любая помощь очень ценится.

-Kelton

+0

Вам нужно нарисовать холст на представлении. –

+0

@MatthewHooker Означает ли это, что я должен создать новый класс, который реализует представление? Или как я могу это сделать? –

+0

findViewById предоставит вам представление. https://developer.android.com/reference/android/support/v7/app/AppCompatActivity.html –

ответ

1

Ну, у вас есть Canvas c с лежащей в основе Bitmap b. Теперь все, что вы рисуете на холсте c, будет нарисовано на растровом изображении b. И вы сделали часть чертежа в приведенном выше коде. У растрового изображения b есть свой рисованный прямоугольник. Но теперь, чтобы увидеть, что вам нужно загрузить этот Bitmap b в некоторый вид, как ImageView. Вы можете иметь ImageView в своем макете activity_level, а затем использовать ImageView.setImageBitmap(b) для загрузки растрового изображения на вид.

0

вам необходимо добавить следующие 2 строки в конце:

ImageView iv= (ImageView) findViewById(R.id.imageview_where_i_will_put_my_awesome_green_rectangle); 
     iv.setImageBitmap(b);