如何保留通过java代码创建的任何视图,以便在android studio中进一步使用?

如何保留通过java代码创建的任何视图,以便在android studio中进一步使用?,android,android-studio,android-view,Android,Android Studio,Android View,我想通过Java代码动态创建一些视图,并存储该视图以供进一步使用。但我不知道如何做到这一点,也找不到任何文档。一种简单的方法是在android studio中创建带有布局的自定义类,并在需要时随时在您的布局中调用它!下面是自定义进度条的简单类 台阶 1.创建类并将其扩展到视图 package com.habie.eri_youth.Habie_ProgressBars; import android.content.Context; import android.content.res

我想通过Java代码动态创建一些视图,并存储该视图以供进一步使用。但我不知道如何做到这一点,也找不到任何文档。

一种简单的方法是在android studio中创建带有布局的自定义类,并在需要时随时在您的布局中调用它!下面是自定义进度条的简单类 台阶 1.创建类并将其扩展到视图

    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 在你的布局中调用这个类,如下所示

 <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"
            />

通过这样做,你可以通过导入任何项目来使用这个进度条! 希望这能提供一些想法