Tengo tres archivos El XML, la función de dibujo y la actividad principal. Tengo algunos LinearLayout
en mi archivo 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>
Esta es la función de dibujar:
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);
}
}
Y esta es la actividad principal:
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);
}
});
}
El programa podría llamar la frontera, pero el tamaño no encajaba en el LinearLayout
. Y cuando hago clic de LinearLayout
nuevo, el programa se bloquea.
Otra cosa, quiero dibujar dos círculos en el centro de la LinearLayout
, pero ¿cómo podría averiguar las coordenadas del centro?
LinearLayout
color de borde, obtuve un relleno sólido, a menos que agregue el siguienteshape
elemento secundario al elemento:<solid android:color="@android:color/transparent" />
<solid android:color="@color/lighter_gray" />
contrario obtuve un fondo negroExtienda LinearLayout / RelativeLayout y úselo directamente en el XML
fuente
onDraw()
método, cree sus objetos en uninit()
método, llamado por el constructor y reutilícelos en elonDraw()
método. La asignaciónonDraw()
(llamada 60 veces por segundo) conduce a un bajo rendimiento, descarga de batería, etc.