
В создании кастомного ProgressBar нет ничего сложного при использовании xml. А вот с созданием его же через код, у некоторых появляются проблемы. Решил выложить пример создания ProgressBar. Как вы увидите дальше, в этом нет ничего сложного:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
LayoutInflater inflater = getLayoutInflater();
LinearLayout content = (LinearLayout) inflater.inflate(R.layout.main, null);
setContentView(content);
// Создаем необходимые drawable с нужными нам цветами
// в нашем случае цвет фона: #484848, цвет прогресса: #00B01B
Drawable background = new ColorDrawable(0xFF484848);
Drawable progress = new ColorDrawable(0xFF00B01B);
ClipDrawable clipProgress = new ClipDrawable(progress, Gravity.LEFT, ClipDrawable.HORIZONTAL);
// Создаем слои, которые понимает ProgressBar
LayerDrawable layerlist = new LayerDrawable(new Drawable[] { background, clipProgress });
layerlist.setId(0, android.R.id.background);
layerlist.setId(1, android.R.id.progress);
// Создаем новый прогресс бар с горизонтальным стилем и нашим фоном
ProgressBar progressBar = new ProgressBar(this, null, android.R.attr.progressBarStyleHorizontal);
progressBar.setLayoutParams(new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
progressBar.setProgressDrawable(layerlist);
progressBar.setProgress(42);
content.addView(progressBar);
}
}
Исходный код: ProgressBarFromCode.zip
p.s. Этот пример, это скорее ответ на топик на хабре Анимация под Android, или спроси у Google: "В качестве упражнения повышенной сложности попробуйте в runtime (не через XML) создать ProgressBar в виде полоски, а не кругляшка."

Posts