Я хочу создать представление динамически с помощью кода Java и сохранить это представление для дальнейшего использования. Но я не знаю, как это сделать, и не нашел никакой документации.
Один из простых способов сделать это - создать собственный класс в студии Android с его макетом и использовать его в любое время, когда он вам понадобится, вызвав его внутри макета ur! вот простой класс настраиваемого индикатора выполнения Шаги 1. создать класс и расширить его до View
package com.habie.eri_youth.Habie_ProgressBars;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.view.View;
import com.habie.eri_youth.R;
/**
* Created by haben fesshaye on 08-03-2019.
*/
public class CircleArcProgress extends View {
private Paint paint=new Paint();
private int startAngle=120;
private int startAngle2=240;
private RectF oval=new RectF();
private int sweepAngle=100;
private float in_rad;
private float out_rad;
private int colorArc;
private int colorArc2;
public CircleArcProgress(Context context, AttributeSet attrs) {
super(context, attrs);
paint.setStyle(Paint.Style.STROKE);
TypedArray array=context.getTheme().obtainStyledAttributes(attrs, R.styleable.CircleArcProgress,0,0);
try{
in_rad=array.getDimension(R.styleable.CircleArcProgress_circle_size,50);
colorArc=array.getColor(R.styleable.CircleArcProgress_color_circle, Color.parseColor("#5C6BC0"));
out_rad=array.getDimension(R.styleable.CircleArcProgress_arc_radius,70);
colorArc2=array.getColor(R.styleable.CircleArcProgress_arc_color, Color.parseColor("#1A237E"));
}
catch (Exception e){
e.printStackTrace();
}
finally {
array.recycle();
}
post(animator);
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
paint.setFlags(Paint.ANTI_ALIAS_FLAG);
paint.setColor(colorArc);
paint.setStyle(Paint.Style.FILL);
canvas.drawCircle(getWidth()/2,getHeight()/2, in_rad, paint);
paint.setStyle(Paint.Style.STROKE);
paint.setColor(colorArc2);
paint.setStrokeWidth(10);
oval.set(getWidth()/2-out_rad,getHeight()/2-out_rad,getWidth()/2+out_rad,getHeight()/2+out_rad);
canvas.drawArc(oval,startAngle2,sweepAngle,false,paint);
}
Runnable animator=new Runnable() {
@Override
public void run() {
if (startAngle2>=1){
startAngle2-=15;
}
else{
startAngle2=360;
}
invalidate();
postDelayed(this,30);
}
};
}
Это простой класс, который создает круговую шкалу выполнения! Шаг 2: опишите некоторые особенности нового представления, создаваемого внутри файла res / value / attr! Что-то вроде этого
<declare-styleable name = "CircleArcProgress">
<attr name = "circle_size" format = "dimension"/>
<attr name = "color_circle" format = "color"/>
<attr name = "arc_radius" format = "dimension"/>
<attr name = "arc_color" format = "color"/>
</declare-styleable>
Шаг 3 вызовите этот класс внутри макета ur следующим образом
<com.habie.eri_youth.Habie_ProgressBars.CircleArcProgress
android:layout_width = "wrap_content"
android:layout_height = "wrap_content"
android:layout_centerHorizontal = "true"
android:layout_centerVertical = "true"
android:id = "@+id/progress"
app:dots_color = "#0475f5"
android:visibility = "visible"
/>
Сделав это, вы можете использовать этот индикатор выполнения в любом проекте, импортировав его! Надеюсь, это даст некоторое представление .............