2012-01-19 3 views
1

Я работаю над приложением, которое требует вертикальной полосы хода с большей шириной. Это возможно в android. Если да, пожалуйста, дайте мне способ начать с?Использование пользовательского индикатора выполнения?

+0

посмотрите http://stackoverflow.com/questions/3926395/android-set-a-progressbar-to-be-a-vertical-bar-instead-of- horizontal – Hiral

+0

thanx, который действительно помог! – Navdroid

ответ

4

Существует более простой был сделать это. У меня была такая же проблема, как и у вас, и хорошо провел время вокруг форумов, чтобы создать вертикальный индикатор выполнения.

Для моего приложения мне потребовалось создать пользовательский индикатор выполнения, поэтому я сделал снимок, который я получил, а затем воспользуюсь функцией масштабирования, чтобы масштабировать ее. Теперь единственной трудной частью этого является то, что часть класса шкалы требует, чтобы вы масштабировали вокруг оси изображения, и вы не можете просто использовать набор с плавающей запятой, так как он будет меняться в зависимости от размера экрана.

Ниже я объясню код для одного из моих вертикальных полос хода. Я использовал свой вертикальный индикатор, чтобы показать, сколько данных был использован для тарифа телефона, то есть 150 из 500.

сначала изображение, которое вы хотите масштабировать

ImageView orangeBar; 

Затем объявить переменный масштаб.

ScaleAnimation scaleO; 

Найти конечно

orangeBar = (ImageView) findViewById(R.id.orange); 

Затем примените масштаб анимации, как этот

scaleO = new ScaleAnimation(1.0f, 1.0f, 1.0f, 2.0f, 1f, 
      pivotPercent); 
    scaleO.setDuration(3000); 
    scaleO.setFillAfter(true); 
    orangeBar.setAnimation(scaleO); 

Третий и четвертый переменной являются те, которые вы изменить, чтобы сделать его расти вертикально. 1.0f - размер изображения по умолчанию. И четвертая переменная - это та, с которой вы играете, чтобы заставить ее расти столько, сколько вы хотите.

Заключительная переменная задает точку поворота, на которой находится изображение в изображении, из которого он будет анимироваться. Я использовал переменную с именем pivotPercent и использовал метод для расчета шарнира. Причина, по которой я это делал, заключается в том, что переменная поворота должна быть разной в зависимости от размера экрана. Я заметил, что когда я анимация моя, когда я поместил мой эмулятор и на свой телефон, это вызывало проблемы. Таким образом, я создал метод, который вычислял бы стержень на основе размера экрана.

Так что я бы первым получить высоту экрана, как так

Display display = getWindowManager().getDefaultDisplay(); 
    final int height_c = display.getWidth(); 

Я бы тогда сделать это

double getPercent = (double) height_c/100 * 3.7; 
    int pivotPercent = (int) getPercent; 

Взял немного поиграть с, чтобы получить эту работу правильно.

Я надеюсь, что это помогает, если у вас есть какие-либо вопросы о коде, просто спросите, и я попытаюсь прояснить

UPDATE:

Вот прогресс бар при загрузке приложения

enter image description here

и после анимации влияют

enter image description here

В этом случае стержень сократился. Как я уже сказал, я использовал свой вертикальный бар, чтобы отметить прогресс. Таким образом, панель всегда начинается с позиции по умолчанию, как показано на рисунке, я просто выбрал произвольную позицию для начала. Тариф не превышает 500, поэтому в примере, который я дал, они использовали 150 из 500. У меня есть метод, который вычисляет процент используемого тарифа и обновляет планку, чтобы отразить это.

Принял у меня день или около того, чтобы улучшить, но весело провести время с ним.

+0

Не могли бы вы добавить скриншот бара? Мне было бы интересно посмотреть, как это выглядело. Благодарю. – Ricky

+0

Обновлено, надеюсь, это поможет. Просто понял, второе изображение меньше, это было непреднамеренно, плохо скриншот и отредактировал его плохо. Но вы поняли, что бар сжался, и это главное, что вам нужно. Я могу вырастить планку, как бы то ни было, просто отредактировав значения в методе масштабной анимации. – AdamM

+0

Если у вас есть какие-либо проблемы с кодом, просто спросите и попробуйте помочь – AdamM

1

Я бы начал с переопределения компонента краски или перекраски. Забыли имя функции, возможно, OnDraw()? -Вы можете рисовать то, что хотите.

обычай, когда коснуться onfocust Override onDraw to change how the drawing occurs (Android)

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