Похоже, вы хотите поэкспериментировать с 2D-графикой - для этого вам следует использовать Canvas. Вы можете управлять рисованием холста с помощью метода invalidate(), который сообщает Android, что нужно перерисовать все, запуская ваш индивидуальный метод onDraw(). Вы упомянули, что не хотите использовать XML-файл, но это простейший способ разместить Canvas - вам не нужно определять его содержимое в XML-файле, а просто сообщить файлу макета, что он там. Мощный, но простой способ добавить Canvas в ваше приложение - настроить View. Например, включите в свой XML-файл элемент <your.package.CustomView android:.../>. Затем объявите класс CustomView extends View. Любой рисунок, который вы хотите сделать, используйте метод onDraw ().
Например, чтобы нарисовать прямоугольник, сделайте что-нибудь вроде этого.
//First you define a colour for the outline of your rectangle
rectanglePaint = new Paint();
rectanglePaint.setARGB(255, 255, 0, 0);
rectanglePaint.setStrokeWidth(2);
rectanglePaint.setStyle(Style.STROKE);
//Then create yourself a Rectangle
Rect rectangle = new Rect(left, top, right, bottom) //in pixels
//And here's a sample onDraw()
@Override
public void onDraw(Canvas canvas){
rectangle.offset(2, 2);
canvas.drawRect(rectangle, rectanglePaint);
}
Каждый раз, когда из вашей программы вызывается invalidate (), вид будет перерисовываться, а прямоугольник перемещается на 2 пикселя вниз и вправо. Примечание: перерисовка происходит только в том случае, если основной поток «ожидает». Другими словами, если у вас есть цикл, вызывающий недействительность несколько раз, представление фактически не будет отрисовано, пока цикл не завершится. Вы можете обойти это, но это добавляет сложности. В качестве примера того, как это делается, взгляните на пример игры LunarLander от Google - это простая игра, демонстрирующая настраиваемый вид, 2 потока и то, как реализовать непрерывную анимацию.
person
Steve Haley
schedule
29.03.2010