Dynamic Buttons with Images: Android Programming
Tutorial on dynamically creating Android Buttons in a TableView at run-time using Java code vs XML. Covers setting text and images in buttons, and onClickListener() for button press. Full project source code available at https://github.com/drbfraser/video-tutorial-code/tree/master/DynamicButtons
If button sizes change when adding text, try setting the text size when you initially populate the buttons, before locking their size.
Java Source Code:
*************************************************************
/**
* Demo on creating dynamic buttons in a table and
* adding background icons.
*/
public class MainActivity extends Activity {
private static final int NUM_ROWS = 7;
private static final int NUM_COLS = 10;
Button buttons[][] = new Button[NUM_ROWS][NUM_COLS];
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
populateButtons();
}
private void populateButtons() {
TableLayout table = (TableLayout) findViewById(R.id.tableForButtons);
for (int row = 0; row != NUM_ROWS; row++) {
TableRow tableRow = new TableRow(this);
tableRow.setLayoutParams(new TableLayout.LayoutParams(
TableLayout.LayoutParams.MATCH_PARENT,
TableLayout.LayoutParams.MATCH_PARENT,
1.0f));
table.addView(tableRow);
for (int col = 0; col != NUM_COLS; col++){
final int FINAL_COL = col;
final int FINAL_ROW = row;
Button button = new Button(this);
button.setLayoutParams(new TableRow.LayoutParams(
TableRow.LayoutParams.MATCH_PARENT,
TableRow.LayoutParams.MATCH_PARENT,
1.0f));
button.setText("" + col + "," + row);
// Make text not clip on small buttons
button.setPadding(0, 0, 0, 0);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
gridButtonClicked(FINAL_COL, FINAL_ROW);
}
});
tableRow.addView(button);
buttons[row][col] = button;
}
}
}
private void gridButtonClicked(int col, int row) {
Toast.makeText(this, "Button clicked: " + col + "," + row,
Toast.LENGTH_SHORT).show();
Button button = buttons[row][col];
// Lock Button Sizes:
lockButtonSizes();
// Does not scale image.
// button.setBackgroundResource(R.drawable.action_lock_pink);
// Scale image to button: Only works in JellyBean!
// Image from Crystal Clear icon set, under LGPL
// http://commons.wikimedia.org/wiki/Crystal_Clear
int newWidth = button.getWidth();
int newHeight = button.getHeight();
Bitmap originalBitmap = BitmapFactory.decodeResource(getResources(), R.drawable.action_lock_pink);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(originalBitmap, newWidth, newHeight, true);
Resources resource = getResources();
button.setBackground(new BitmapDrawable(resource, scaledBitmap));
// Change text on button:
button.setText("" + col);
}
private void lockButtonSizes() {
for (int row = 0; row != NUM_ROWS; row++) {
for (int col = 0; col != NUM_COLS; col++) {
Button button = buttons[row][col];
int width = button.getWidth();
button.setMinWidth(width);
button.setMaxWidth(width);
int height = button.getHeight();
button.setMinHeight(height);
button.setMaxHeight(height);
}
}
}
}
Что делает видео по-настоящему запоминающимся? Наверное, та самая атмосфера, которая заставляет забыть о времени. Когда вы заходите на RUVIDEO, чтобы посмотреть онлайн «Dynamic Buttons with Images: Android Programming», вы рассчитываете на нечто большее, чем просто загрузку плеера. И мы это понимаем. Контент такого уровня заслуживает того, чтобы его смотрели в HD 1080, без дрожания картинки и бесконечного буферизации.
Честно говоря, Rutube сегодня — это кладезь уникальных находок, которые часто теряются в общем шуме. Мы же вытаскиваем на поверхность самое интересное. Будь то динамичный экшн, глубокий разбор темы от любимого автора или просто уютное видео для настроения — всё это доступно здесь бесплатно и без лишних формальностей. Никаких «заполните анкету, чтобы продолжить». Только вы, ваш экран и качественный поток.
Если вас зацепило это видео, не забудьте взглянуть на похожие материалы в блоке справа. Мы откалибровали наши алгоритмы так, чтобы они подбирали контент не просто «по тегам», а по настроению и смыслу. Ведь в конечном итоге, онлайн-кинотеатр — это не склад файлов, а место, где каждый вечер можно найти свою историю. Приятного вам отдыха на RUVIDEO!
Видео взято из открытых источников Rutube. Если вы правообладатель, обратитесь к первоисточнику.