Я просматривал всю документацию и примеры, найденные в Интернете, но мне еще предстоит найти какие-либо хорошие ресурсы по созданию пользовательских представлений с использованием ТОЛЬКО Java. Я видел много таких, которые описывают их создание с использованием XML и Java.
Я думаю, что с чем я бьюсь больше всего, это относительно простые вещи, такие как: «Могу ли я использовать виджет« TextView »в пользовательском представлении, а также использовать холст для рисования графики? один или другой, но, похоже, не может найти способы сделать оба одновременно.
Например: я хотел бы иметь виджет TextView вверху представления с осязаемой графикой внизу, которая действует как циферблат и рисуется на холсте, который занимает все доступное пространство после добавления TextView. Когда я поворачиваю диск, он увеличивает текст внутри TextView. Я думаю, что-то вроде следующего будет работать ... но это не так и, скорее всего, потому что я упускаю что-то простое.
public class Dial extends LinearLayout implements View.OnTouchListener
{
Bitmap _dial;
protected int bpm = 120;
TextView txtBpm;
/**
* Constructor
* @param context
*/
public Dial(Context context)
{
super(context);
_dial = BitmapFactory.decodeResource(getResources(), R.drawable.dial_small);
txtBpm = new TextView(context);
txtBpm.setTextSize(43);
txtBpm.setWidth(100);
txtBpm.setText(String.valueOf(bpm));
this.addView(txtBpm);
}
@Override
protected void onDraw(Canvas canvas)
{
super.onDraw(canvas);
// Setting the y-pos to 160 so even
// if the canvas fills the view,
// the dial will still be below the textview.
canvas.drawBitmap(_dial, 0,160,null);
}
@Override
public void onSizeChanged(int w, int h, int oldW, int oldH)
{
}
/* (non-Javadoc)
* @see android.view.View.OnTouchListener#onTouch(android.view.View, android.view.MotionEvent)
*/
@Override
public boolean onTouch(View arg0, MotionEvent arg1)
{
// Do some stuff here to rotate the dial
return false;
}
}