Как сохранить любое представление, созданное с помощью java-кода, для дальнейшего использования в студии Android?

Я хочу создать представление динамически с помощью кода Java и сохранить это представление для дальнейшего использования. Но я не знаю, как это сделать, и не нашел никакой документации.

0
0
15
1

Ответы 1

Один из простых способов сделать это - создать собственный класс в студии 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"
            />

Сделав это, вы можете использовать этот индикатор выполнения в любом проекте, импортировав его! Надеюсь, это даст некоторое представление .............

Другие вопросы по теме