Я пытаюсь нарисовать один прямоугольник, который светло-серый над другим прямоугольником белого цвета на холсте, но он ничего не делает. Вот что я получил: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).
Просто попробовал, что еще не повезло. Спасибо, однако, @ user3339429. – weirdo16
Если у вас все еще есть проблемы, покажите мне, как вы показываете поверхностный вид! Возможно, на поверхности нет никакого фактического пространства на экране, поэтому высота может быть 0 .. и ваш поток, который вызывает недействительный (или фактически postinvalidate), может не вызвать его правильно. Если вам нужен способ вызова onDraw каждый заданный интервал, используйте обработчик с postDelayed вместо потока, если он длительно сохраняется./0 – JTY
Обновлен исходный пост с тем, что у меня есть. – weirdo16