2015-03-21 3 views
0

Я пытаюсь нарисовать один прямоугольник, который светло-серый над другим прямоугольником белого цвета на холсте, но он ничего не делает. Вот что я получил:Android: нарисуйте прямоугольник над другим прямоугольником на холсте

public void onDraw(Canvas c) { 
    Paint paint = new Paint(); 
    paint.setColor(Color.LTGRAY); 
    c.drawRect(0, 0, width, height, paint); 
    paint.setColor(Color.WHITE); 
    c.drawRect(10, 10, width - 10, height - 10, paint); //This is slightly smaller than the gray rectangle, so it looks kinda like a border. 
} 

Для отображения этого я использую setContentView() в основной деятельности, чтобы установить вид на новый класс, расширяющий SurfaceView. Когда поверхность создается в пользовательском SurfaceView, она запускает поток, который выполняет onDraw() каждые 100 миллисекунд. Я получил холст, используя holder.lockCanvas(), затем onDraw() ing и holder.unlockCanvasAndPost (c).

ответ

0

Где вы начинаете вводить свои width и height? Установлены ли они в 0? Попробуйте позвонить canvas.getWidth() или canvas.getHeight().

+0

Просто попробовал, что еще не повезло. Спасибо, однако, @ user3339429. – weirdo16

+0

Если у вас все еще есть проблемы, покажите мне, как вы показываете поверхностный вид! Возможно, на поверхности нет никакого фактического пространства на экране, поэтому высота может быть 0 .. и ваш поток, который вызывает недействительный (или фактически postinvalidate), может не вызвать его правильно. Если вам нужен способ вызова onDraw каждый заданный интервал, используйте обработчик с postDelayed вместо потока, если он длительно сохраняется./0 – JTY

+0

Обновлен исходный пост с тем, что у меня есть. – weirdo16

Смежные вопросы