Ich habe drei Dateien. Das XML, die Zeichenfunktion und die Hauptaktivität. Ich habe einige LinearLayout
in meiner XML-Datei.
<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>
Dies ist die Zeichenfunktion:
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);
}
}
Und das ist die Hauptaktivität:
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);
}
});
}
Das Programm konnte einen Rand zeichnen, aber die Größe passte nicht zum LinearLayout
. Und wenn ich erneut auf klicke LinearLayout
, stürzt das Programm ab.
Eine andere Sache, ich möchte zwei Kreise in der Mitte des zeichnen LinearLayout
, aber wie könnte ich die Mittelkoordinaten herausfinden?
LinearLayout
ich eine feste Füllung aus dershape
<solid android:color="@android:color/transparent" />
<solid android:color="@color/lighter_gray" />
sonst bekam ich einen schwarzen HintergrundErweitern Sie LinearLayout / RelativeLayout und verwenden Sie es direkt im XML
quelle
onDraw()
Methode zu, erstellen Sie Ihre Objekte in einerinit()
vom Konstruktor aufgerufenen Methode und verwenden Sie sie in deronDraw()
Methode wieder. Das ZuweisenonDraw()
(60-mal pro Sekunde aufgerufen) führt zu schlechter Leistung, Batterieentladung usw.