Отображение элементов на Canvas
У меня есть Активити на котором, в зависимости от введенных параметров, рисуется график. Опорные точки этого графика можно двигать и т.п. Вот примерно так это выглядит:
Собственно, я думаю, что содержание методов не особо важно, поэтому вот всё, что я использую:
public class FirstActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new DrawView(this));
}
//анимация для открытия этой Активити
@Override
public void finish() {
super.finish();
overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_right);
}}
class DrawView extends View {
//создаю все необходимые константы и переменные
Paint p;
Paint p2;
public DrawView(Context context) {
super(context);
//задаем перо для рисования
p = new Paint(Paint.ANTI_ALIAS_FLAG);
p2 = new Paint(p);
p2.setStrokeWidth(4);
p2.setColor(Color.BLACK);
p2.setPathEffect(new DashPathEffect(new float[]{30, 10}, 0));
}
public void onDraw(Canvas canvas) {
//Рисую линии, кружочки, буковки и получается рисунок со скриншота
}
//Двигаю точки
@Override
public boolean onTouchEvent(MotionEvent event) {
float X = event.getX();
float Y = event.getY();
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
//Если попал в пределы точки, то можно двигать
break;
case MotionEvent.ACTION_MOVE:
// запрещаем двигать другие точки и перерисовываем нажатую
case MotionEvent.ACTION_UP:
break;
}
return true;
}}
xml- файл я вообще не трогал.
В чем же проблема?
Мне нужно на этом Активити разместить EditText , чтобы я мог ввести туда параметры и график перерисовался, а когда я начинал двигать точки графика, то чтобы менялись значения в полях ввода. Конечно, желательно, чтобы все это происходило сразу, без каких либо нажатий кнопок и т.п. Пока что проблема не в том как совершать передачу данных и перерасчет, а в том, как эти элементы разместить на Активити?!?
Какое решение есть у меня в голове. Их два.
1) Сделать так, чтобы Canvas занимал не весь экран, а только, например, половину экрана, а EditText разместить на лейауте, например. Читал много про Bitmap , но как я понял, сам битмап предназначен для того, чтобы поместить что-то на канву, а не размещать канву в своих, заранее заданных, пределах.
2) Отображать элементы прямо на канве. Но простым способом, типо инициализации по id, как вы понимаете, не обойтись.
Вот так вот. К сожалению, я совершенно не понимаю как реализовать это.
