Saya punya tiga file. XML, fungsi draw, dan Activity utama. Saya punya beberapa LinearLayout
di file XML saya.
<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>
Ini adalah fungsi undian:
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);
}
}
Dan ini adalah Kegiatan utama:
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);
}
});
}
Program bisa menggambar garis batas tetapi ukurannya tidak sesuai LinearLayout
. Dan ketika saya mengklik LinearLayout
lagi, program macet.
Hal lain, saya ingin menggambar dua lingkaran di tengah LinearLayout
, tetapi bagaimana saya bisa mengetahui koordinat pusat?
LinearLayout
saya mendapat warna solid dari warna perbatasan, kecuali saya menambahkan anak berikut keshape
elemen:<solid android:color="@android:color/transparent" />
<solid android:color="@color/lighter_gray" />
kalau tidak saya punya latar belakang hitamPerluas LinearLayout / RelativeLayout dan gunakan langsung pada XML
sumber
onDraw()
metode, membuat objek Anda dalam suatuinit()
metode, dipanggil oleh konstruktor dan menggunakannya kembali dalamonDraw()
metode. Mengalokasikan dalamonDraw()
(disebut 60 kali per detik) menyebabkan kinerja yang buruk, menguras baterai, dll