2016-12-27 1 views
0

Я создал холст в android, который успешно рисует графику, с которой я работаю. Я хотел представить индикатор прогресса, чтобы обновить игрока по их прогрессу. До сих пор Ii удалось создать индикатор выполнения, как было разработано, и даже обновить pb.setProgress.Progress Bar: установить местоположение/позицию в Canvas

Моя проблема заключается в том, что индикатор выполнения отображается в верхнем левом углу, и я хочу переместить его в центр. Я не могу найти поддержку для ProgressBar (я могу для ProgressDialog, но я не хочу этого).

Я пробовал:

probarTrainingProgress.layout(getWidth()/2, getHeight()/2, getWidth()/2 + probarTrainingProgress.getWidth(), getHeight()/2 +probarTrainingProgress.getHeight()); 

, но безрезультатно.

Вот мой код из холста:

probarTrainingProgress.setMax(currentAttackProgressNeeded); 
probarTrainingProgress.setProgress(currentAttackOverallStatistics); 
probarTrainingProgress.setProgressDrawable(getResources().getDrawable(R.drawable.barxp)); 
probarTrainingProgress.draw(attackCanvas); 

Heres мой XML код сюда в ProgressBar:

<ProgressBar 
    android:id="@+id/probarTrainingProgress" 
    style="?android:attr/progressBarStyleHorizontal" 
    android:layout_width="100dp" 
    android:layout_height="50dp" 
    android:layout_margin="1dp" 
    android:indeterminate="false" 
    android:progressDrawable="@drawable/barxp" 
    android:visibility="gone"/> 

ответ

1

Переместить холст первым использованием Canvas.translate перед нанесением. Ваш код должен выглядеть так:

canvas.save() 
canvas.translate(x, y) 
view.draw(canvas) 
canvas.restore() 
+0

Привет, Спасибо за вашу идею. Это не решение, потому что: а) я уже пробовал это, и б) я не хочу, чтобы он находился в центре экрана, я просто рассматриваю, как я пытался расположить его на холсте. Кажется маловероятным, что я не могу программно перемещать индикатор выполнения в любую позицию на экране или даже плавать индикатор выполнения, скажем, следовать растровому изображению. – TBQPR

+0

Возможно, я не понимаю, что вы после. Какова цель рисования (attackCanvas)? Что вы делаете с холстом впоследствии? – Hai

+0

В любом случае, предполагая, что вы пытаетесь центрировать в растровом изображении, вы должны использовать Canvas.translate для перемещения холста до его рисования. – Hai