В создании кастомного ProgressBar нет ничего сложного при использовании xml. А вот с созданием его же через код, у некоторых появляются проблемы. Решил выложить пример создания ProgressBar. Как вы увидите дальше, в этом нет ничего сложного:

public class ProgressBarFromCode extends Activity {

    @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 в виде полоски, а не кругляшка."