У меня есть три файла. XML, функция рисования и основная активность. У меня есть некоторые LinearLayout
в моем файле XML.
<LinearLayout android:orientation="horizontal"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1">
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#ef3"
android:id="@+id/img01"/>
<LinearLayout android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_weight="1"
android:background="#E8A2B4"
android:id="@+id/img02"/>
</LinearLayout>
Это функция рисования:
public class getBorder extends TextView {
public getBorder(Context context) {
super(context);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Paint paint = new Paint();
paint.setColor(android.graphics.Color.RED);
canvas.drawLine(0, 0, this.getWidth() - 1, 0, paint);
canvas.drawLine(0, 0, 0, this.getHeight() - 1, paint);
canvas.drawLine(this.getWidth() - 1, 0, this.getWidth() - 1,
this.getHeight() - 1, paint);
canvas.drawLine(0, this.getHeight() - 1, this.getWidth() - 1,
this.getHeight() - 1, paint);
}
}
И это основной вид деятельности:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
final getBorder getBorder = new getBorder(this);
final LinearLayout img01 = (LinearLayout) findViewById(R.id.img01);
img01.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
getBorder.setWidth(100);
getBorder.setHeight(100);
img01.addView(getBorder);
}
});
}
Программа может рисовать границы, но размер не соответствует LinearLayout
. И когда я нажимаю LinearLayout
снова, программа вылетает.
Другое дело, я хочу нарисовать два круга в центре LinearLayout
, но как я могу определить координаты центра?
LinearLayout
я получил сплошную заливку из цвета границы, если только я не добавил следующийshape
элемент к элементу:<solid android:color="@android:color/transparent" />
<solid android:color="@color/lighter_gray" />
иначе я получил черный фонРасширьте LinearLayout / RelativeLayout и используйте его прямо в XML
источник
onDraw()
методе, создавайте свои объекты вinit()
методе, вызываемом конструктором, и повторно используйте их вonDraw()
методе. ВыделениеonDraw()
(вызывается 60 раз в секунду) ведет к снижению производительности, разряду батареи и т. Д.