Я разрабатываю небольшое приложение для Android, в котором я использую свой собственный класс линейного макета. В этом классе я попытался нарисовать один маленький треугольник и попытался включить его в свой линейный макет, но я не смог этого сделать. Я попробовал его в следующих способов ...Как нарисовать треугольную форму и добавить ее в относительный или линейный макет андроида
@SuppressLint("DrawAllocation")
public class SimpleLin extends LinearLayout {
public String TAG = "CustomviewActivity";
LinearLayout parentLayout;
public SimpleLin(Context context)
{
super(context);
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if(inflater != null){
view = inflater.inflate(R.layout.main2, this);d.lin_llt);
parentLayout.setBackgroundResource(R.drawable.bcd);
}
}
public SimpleLin(Context context, AttributeSet attrs) {
super(context, attrs);
context1= context;
}
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
Log.i("############################", "inside ondraw");
Paint p = new Paint();
p.setStyle(Style.FILL);
p.setColor(Color.RED);
Point point = new Point();
point.x = 80;
point.y = 80;
Path path = getEquilateralTriangle(point, 70, Direction.SOUTH);
Bitmap b = Bitmap.createBitmap(500, 500, Bitmap.Config.ARGB_8888);
canvas.drawPath(path, p);
}
public static Path getEquilateralTriangle(Point p1, int width, Direction direction) {
Point p2 = null, p3 = null;
if (direction == Direction.NORTH) {
p2 = new Point(p1.x + width, p1.y);
p3 = new Point(p1.x + (width/2), p1.y - width);
}
else if (direction == Direction.SOUTH) {
p2 = new Point(p1.x + width,p1.y);
p3 = new Point(p1.x + (width/2), p1.y + width);
}
else if (direction == Direction.EAST) {
p2 = new Point(p1.x, p1.y + width);
p3 = new Point(p1.x - width, p1.y + (width/2));
}
else if (direction == Direction.WEST) {
p2 = new Point(p1.x, p1.y + width);
p3 = new Point(p1.x + width, p1.y + (width/2));
}
Path path = new Path();
path.moveTo(p1.x, p1.y);
path.lineTo(p2.x, p2.y);
path.lineTo(p3.x, p3.y);
return path;
}
public enum Direction
{
NORTH, SOUTH, EAST, WEST;
}
@SuppressWarnings("deprecation")
public void initialiseImages()
{
invalidate();
}
}
Я зову initialiseImages
метод из моей деятельности, где я хотел бы использовать этот пользовательский макет. Поэтому проблема заключается в том, что он не вызывает мой метод draw при использовании invalidate(). Вот почему он не рисует мой треугольник. и я также путаю, как включить этот треугольник в мой parentlayout
.. Есть неправильно в моем коде .. Как нарисовать такие фигуры в андроиде ... Нужна помощь ... Спасибо ...
почему вам нужно Inflater в конструкторе? вы сказали, что вы просто пытаетесь нарисовать треугольник? – Atrix1987
yeah becoz Я хотел добавить этот треугольник в эту линейную компоновку ... Любая идея .. Нужна помощь. – nilkash
вам не нужно, вы расширяете линейную компоновку, затем вы раздуваете один раз, просматриваете ссылки dev для пользовательского представления, тем временем я получу вам пример кода – Atrix1987