অ্যান্ড্রয়েডে একটি বৃত্তাকার অগ্রগতি তৈরি করা যায় যা এটি ঘুরবে?


154

আমি একটি বৃত্তাকার প্রগতিবার তৈরি করার চেষ্টা করছি। এটিই আমি অর্জন করতে চাই

ধূসর রঙের ব্যাকগ্রাউন্ড রিং রয়েছে। এর শীর্ষে, একটি নীল রঙের প্রগতি বার উপস্থিত হয় যা একটি বৃত্তাকার পথে 60 থেকে 0 থেকে 360 বা সেকেন্ডের যে পরিমাণে চলে আসে in

এখানে চিত্র বর্ণনা লিখুন

এখানে আমার উদাহরণ কোড।

<ProgressBar
            android:id="@+id/ProgressBar"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            style="?android:attr/progressBarStyleLarge"
            android:indeterminateDrawable="@drawable/progressBarBG"
            android:progress="50"
            />

এটি করতে, আঁকতে সক্ষম "প্রগতিবারবিজি" তে আমি একটি স্তর তালিকা তৈরি করছি এবং সেই স্তর তালিকার ভিতরে আমি দুটি আইটেম দেখিয়েছি giving

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@android:id/background">
    <shape
            android:shape="ring"
            android:innerRadius="64dp"
            android:thickness="8dp"
            android:useLevel="false">

        <solid android:color="@color/grey" />
    </shape>
</item>

<item android:id="@android:id/progress">
    <clip>
        <shape
                android:shape="ring"
                android:innerRadius="64dp"
                android:thickness="8dp"
                android:useLevel="false">

            <solid android:color="@color/blue" />
        </shape>
    </clip>
</item>

এখন, প্রথম ধূসর রিংটি সূক্ষ্ম উত্পন্ন হয়। নীল আংটিটি যদিও অঙ্কনযোগ্য বাম থেকে শুরু হয় এবং ডানদিকে যায় ঠিক যেমন একটি রৈখিক প্রগতিবার কাজ করে। এটি দেখায় যে 50% অগ্রগতিতে লাল রঙের তীরটি নির্দেশ দেখিয়েছে।

এখানে চিত্র বর্ণনা লিখুন

আমি আশানুরূপ হিসাবে নীল অগ্রগতিটি বৃত্তাকার পথে সরানো চাই।


9
আপনি কেন ভোট দিয়েছেন তা নিশ্চিত নয়, কিছুটা অন্যায় বলে মনে হচ্ছে।
বেনিয়ামিনপল

1
আমি এই প্রশ্ন পোস্ট করার আগে তাকিয়ে ছিল। আমি কিছু উত্তর পেয়েছি তবে তারা যা অর্জন করার চেষ্টা করছি তার জন্য তারা কাজ করে নি। এটি কেউ একটি ডুপ্লিকেট পোস্ট বলে ভেবে আমাকে ডাউনভোট করেছে।
সৌরভ শ্রীবাস্তব

1
হতে পারে এটি আপনাকে সঠিক দিক নির্দেশ করতে পারে github.com/grmaciel/two-level-circular-progress-bar
gmemaro

1
আপনি এই লাইব্রেরি ব্যবহার করতে পারেন github.com/emre1512/CircleProgressBar
Zapdos

1
আপনি দয়া করে দয়া করে কোনও উদার লোককে পুরস্কৃত করবেন যিনি প্রদত্ত উত্তরগুলির মধ্যে একটি স্বীকার করে তার দুর্দান্ত প্রচেষ্টার জন্য আপনার জন্য সমাধান খুঁজতে চেষ্টা করেছিলেন?
সিইও টেক

উত্তর:


322

আমার দুটি সমাধান এখানে।

সংক্ষিপ্ত উত্তর:

একটি তৈরির পরিবর্তে layer-list, আমি এটি দুটি ফাইলে বিভক্ত করেছি। একটি এর জন্য ProgressBarএবং এর পটভূমির জন্য একটি।

এটি ProgressDrawableফাইল (@ দ্রাব্যযোগ্য ফোল্ডার): বিজ্ঞপ্তি_প্রসারণ_বার.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="270"
    android:toDegrees="270">
    <shape
        android:innerRadiusRatio="2.5"
        android:shape="ring"
        android:thickness="1dp"
        android:useLevel="true"><!-- this line fixes the issue for lollipop api 21 -->

        <gradient
            android:angle="0"
            android:endColor="#007DD6"
            android:startColor="#007DD6"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

এবং এটি এর জন্য background(@ প্রত্যাহারযোগ্য ফোল্ডার): বৃত্ত_শ্যাপি.এক্সএমএল

<?xml version="1.0" encoding="utf-8"?>
<shape
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="ring"
    android:innerRadiusRatio="2.5"
    android:thickness="1dp"
    android:useLevel="false">

    <solid android:color="#CCC" />

</shape>

এবং শেষে, আপনি যে বিন্যাসটি কাজ করছেন তার ভিতরে:

<ProgressBar
        android:id="@+id/progressBar"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:indeterminate="false"
        android:progressDrawable="@drawable/circular_progress_bar"
        android:background="@drawable/circle_shape"
        style="?android:attr/progressBarStyleHorizontal"
        android:max="100"
        android:progress="65" />

ফলাফল এখানে:

ফলাফল 1

দীর্ঘ উত্তর:

উত্তরাধিকার সূত্রে প্রাপ্ত একটি কাস্টম ভিউ ব্যবহার করুন android.view.View

ফলাফল 2

এখানে গিথুব- এ সম্পূর্ণ প্রকল্প রয়েছে


@ পেদ্রাম কীভাবে আমার অগ্রগতি বারে শতাংশ নির্ধারণ করা উচিত? উদাহরণস্বরূপ, বর্তমানে এটি 50% হবে। অগ্রগতি বারে আমার 50% কীভাবে সেট করা উচিত?

@ 20 সেন্ট, ডকুমেন্টেশন পড়ুন, আপনার প্রগতিবারের জন্য একটি রেফারেন্স পাওয়া উচিত এবং কলটির setProgressপদ্ধতিটি তারপরে মানটি পাস করুন। google.com/…
এম রেজা নাসিরলু

আমি সঠিক মানগুলি, লাল কয়েক ডজন স্ট্যাকওভারফ্লো বিষয়গুলি অনুসন্ধান করার চেষ্টা করে বাদাম গিয়েছিলাম, কেবলমাত্র এখানে সমাধানের সন্ধান করতে .. android:fromDegrees="270" android:toDegrees="270"এটি সমাধান করেছেন !! অনেক ধন্যবাদ!
হেনরিক ডি সোসা 21

@ স্কাইনেট হ্যাঁ, এবং আমি এটি সংশোধন করার চেষ্টা করিনি কারণ আমি ভিউ ক্লাস বিকাশকারীকে
andঅ্যান্ড্রয়েড / ট্রেনিং / কাস্টম-ভিউস / ইন্ডেক্স এইচটিএমএল

1
@ মিমআরমান্ড আরে ধন্যবাদ, আসলে এটি ললিপপ 5.1 আপডেটে আবার কাজ শুরু করে, এবং সেই লাইনটি 21 এপি 21
এম রেজা নাসিরলু

23

আমি সহজ উপায়ে দিয়েছি:

একই জন্য স্ক্রিন শট চেক করুন।

কাস্টমপ্রোগ্রেসবার্টিভিটি.জভা :

public class CustomProgressBarActivity extends AppCompatActivity {

    private TextView txtProgress;
    private ProgressBar progressBar;
    private int pStatus = 0;
    private Handler handler = new Handler();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_custom_progressbar);

        txtProgress = (TextView) findViewById(R.id.txtProgress);
        progressBar = (ProgressBar) findViewById(R.id.progressBar);

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (pStatus <= 100) {
                    handler.post(new Runnable() {
                        @Override
                        public void run() {
                            progressBar.setProgress(pStatus);
                            txtProgress.setText(pStatus + " %");
                        }
                    });
                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    pStatus++;
                }
            }
        }).start();

    }
}

ক্রিয়াকলাপ_কাস্টম_প্রোগ্রেসারবার.এক্সএমএল :

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.skholingua.android.custom_progressbar_circular.MainActivity" >


    <RelativeLayout
        android:layout_width="wrap_content"
        android:layout_centerInParent="true"
        android:layout_height="wrap_content">

        <ProgressBar
            android:id="@+id/progressBar"
            style="?android:attr/progressBarStyleHorizontal"
            android:layout_width="250dp"
            android:layout_height="250dp"
            android:layout_centerInParent="true"
            android:indeterminate="false"
            android:max="100"
            android:progress="0"
            android:progressDrawable="@drawable/custom_progressbar_drawable"
            android:secondaryProgress="0" />


        <TextView
            android:id="@+id/txtProgress"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignBottom="@+id/progressBar"
            android:layout_centerInParent="true"
            android:textAppearance="?android:attr/textAppearanceSmall" />
    </RelativeLayout>



</RelativeLayout>

কাস্টম_প্রেসবারবার_ড্রেবেবল.এক্সএমএল :

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="-90"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toDegrees="270" >

    <shape
        android:shape="ring"
        android:useLevel="false" >
        <gradient
            android:centerY="0.5"
            android:endColor="#FA5858"
            android:startColor="#0099CC"
            android:type="sweep"
            android:useLevel="false" />
    </shape>

</rotate>

আশা করি এটা তোমাকে সাহায্য করবে।


হাই হিরেন, আমি ভিউতে কেবল দুটি রঙ প্রদর্শন করার চেষ্টা করছি। লাল এবং সবুজ। তবে আমি বৃত্তেও লাল এবং সবুজ রঙের কিছু মিশ্রণ দেখতে পাচ্ছি। আমি কীভাবে এটি অপসারণ করতে পারি?
লোকেশ পান্ডে

20

আমি এখানে অ্যানড্রয়েডের বিজ্ঞপ্তি অগ্রগতি বারে আমার ব্লগ demutsuts.com বিস্তারিত উদাহরণ লিখেছি । আপনি সেখানে সম্পূর্ণ উত্স কোড এবং ব্যাখ্যা অনুরাগ করতে পারেন।

কোনও লাইব্রেরি ছাড়াই খাঁটি কোডে বৃত্তের ভিতরে শতাংশের সাথে বৃত্তাকার প্রগতিবারটি কীভাবে তৈরি করেছি তা এখানে।

এখানে চিত্র বর্ণনা লিখুন

প্রথমে একটি অঙ্কনযোগ্য ফাইল তৈরি করুন circular.xml

<?xml version="1.0" encoding="utf-8"?>

<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:id="@android:id/secondaryProgress">
        <shape
            android:innerRadiusRatio="6"
            android:shape="ring"
            android:thicknessRatio="20.0"
            android:useLevel="true">


            <gradient
                android:centerColor="#999999"
                android:endColor="#999999"
                android:startColor="#999999"
                android:type="sweep" />
        </shape>
    </item>

    <item android:id="@android:id/progress">
        <rotate
            android:fromDegrees="270"
            android:pivotX="50%"
            android:pivotY="50%"
            android:toDegrees="270">

            <shape
                android:innerRadiusRatio="6"
                android:shape="ring"
                android:thicknessRatio="20.0"
                android:useLevel="true">


                <rotate
                    android:fromDegrees="0"
                    android:pivotX="50%"
                    android:pivotY="50%"
                    android:toDegrees="360" />

                <gradient
                    android:centerColor="#00FF00"
                    android:endColor="#00FF00"
                    android:startColor="#00FF00"
                    android:type="sweep" />

            </shape>
        </rotate>
    </item>
</layer-list>

এখন আপনার activity_main.xml অ্যাড নিম্নলিখিত:

  <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/dialog"
    tools:context="com.example.parsaniahardik.progressanimation.MainActivity">

    <ProgressBar

        android:id="@+id/circularProgressbar"
        style="?android:attr/progressBarStyleHorizontal"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:indeterminate="false"
        android:max="100"
        android:progress="50"
        android:layout_centerInParent="true"
        android:progressDrawable="@drawable/circular"
        android:secondaryProgress="100"
        />

    <ImageView
        android:layout_width="90dp"
        android:layout_height="90dp"
        android:background="@drawable/whitecircle"
        android:layout_centerInParent="true"/>

    <TextView
        android:id="@+id/tv"
        android:layout_width="250dp"
        android:layout_height="250dp"
        android:gravity="center"
        android:text="25%"
        android:layout_centerInParent="true"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="20sp" />

</RelativeLayout>

ইন activity_main.xmlআমি শতাংশ প্রায় সাদা ব্যাকগ্রাউন্ড দেখানোর জন্য সাদা ব্যাকগ্রাউন্ড সঙ্গে এক বিজ্ঞপ্তি ইমেজ ব্যবহার করেছেন। চিত্রটি এখানে:

এখানে চিত্র বর্ণনা লিখুন

শতাংশের পাঠ্যের চারপাশে কাস্টম রঙ সেট করতে আপনি এই চিত্রের রঙ পরিবর্তন করতে পারেন।

এখন অবশেষে নিম্নলিখিত কোড যুক্ত করুন MainActivity.java:

import android.content.res.Resources;
import android.graphics.drawable.Drawable;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.animation.DecelerateInterpolator;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

    int pStatus = 0;
    private Handler handler = new Handler();
    TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Resources res = getResources();
        Drawable drawable = res.getDrawable(R.drawable.circular);
        final ProgressBar mProgress = (ProgressBar) findViewById(R.id.circularProgressbar);
        mProgress.setProgress(0);   // Main Progress
        mProgress.setSecondaryProgress(100); // Secondary Progress
        mProgress.setMax(100); // Maximum Progress
        mProgress.setProgressDrawable(drawable);

      /*  ObjectAnimator animation = ObjectAnimator.ofInt(mProgress, "progress", 0, 100);
        animation.setDuration(50000);
        animation.setInterpolator(new DecelerateInterpolator());
        animation.start();*/

        tv = (TextView) findViewById(R.id.tv);
        new Thread(new Runnable() {

            @Override
            public void run() {
                // TODO Auto-generated method stub
                while (pStatus < 100) {
                    pStatus += 1;

                    handler.post(new Runnable() {

                        @Override
                        public void run() {
                            // TODO Auto-generated method stub
                            mProgress.setProgress(pStatus);
                            tv.setText(pStatus + "%");

                        }
                    });
                    try {
                        // Sleep for 200 milliseconds.
                        // Just to display the progress slowly
                        Thread.sleep(8); //thread will take approx 1.5 seconds to finish
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }).start();
    }
}

আপনি যদি অনুভূমিক অগ্রগতি বার তৈরি করতে চান তবে এই লিঙ্কটি অনুসরণ করুন, এটি উত্স কোড সহ অনেক মূল্যবান উদাহরণ রয়েছে:
http://www.skholingua.com/android-basic/user-interface/form-widgets/progressbar


15

আমি গিটহাব সার্কুলারপ্রোগ্রবারে একটি ওপেন সোর্স লাইব্রেরি বুঝতে পেরেছি যা আপনি সম্ভব সহজতম উপায়টি ঠিক কী চান:

জিআইএফ ডেমো সার্কুলারপ্রসেসবার

, USAGE

একটি বৃত্তাকার ProgressBar যোগ করতে CircularProgressBar আপনার লেআউট XML- এর যোগ CircularProgressBar গ্রন্থাগার আপনার প্রজেক্টর অথবা আপনার কাছে Gradle মাধ্যমে এটি দখল করতে পারেন:

compile 'com.mikhaellopez:circularprogressbar:1.0.0'

এক্সএমএল

<com.mikhaellopez.circularprogressbar.CircularProgressBar
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:background_progressbar_color="#FFCDD2"
    app:background_progressbar_width="5dp"
    app:progressbar_color="#F44336"
    app:progressbar_width="10dp" />

আপনার সার্কুলারপ্রসবারবার পরিবর্তন করতে আপনাকে অবশ্যই আপনার এক্সএমএলে নিম্নলিখিত বৈশিষ্ট্যগুলি ব্যবহার করতে হবে।

বিশিষ্টতা:

  • app:progress (পূর্ণসংখ্যা) >> ডিফল্ট 0
  • app:progressbar_color (রঙ) >> ডিফল্ট কালো
  • app:background_progressbar_color (রঙ) >> ডিফল্ট গ্রে
  • app:progressbar_width (মাত্রা) >> ডিফল্ট 7dp
  • app:background_progressbar_width (মাত্রা) >> ডিফল্ট 3 ডিপি

জাভা

CircularProgressBar circularProgressBar = (CircularProgressBar)findViewById(R.id.yourCircularProgressbar);
circularProgressBar.setColor(ContextCompat.getColor(this, R.color.progressBarColor));
circularProgressBar.setBackgroundColor(ContextCompat.getColor(this, R.color.backgroundProgressBarColor));
circularProgressBar.setProgressBarWidth(getResources().getDimension(R.dimen.progressBarWidth));
circularProgressBar.setBackgroundProgressBarWidth(getResources().getDimension(R.dimen.backgroundProgressBarWidth));
int animationDuration = 2500; // 2500ms = 2,5s
circularProgressBar.setProgressWithAnimation(65, animationDuration); // Default duration = 1500ms

এই পাঠাগারটি এখানে কাঁটাচামচ বা ডাউনলোড করুন >> https://github.com/lopspower/CircularProgressBar


আমি এটি চেষ্টা করে দেখলাম এটি সত্যিই দুর্দান্ত কিন্তু এখন কোনও অ্যানিমেশন পরিবর্তন শ্রোতার সন্ধান পেয়েছে। আপনি কোন উপায় জানেন?
মোঃ ইমরান চৌধুরী চৌধুরী

@ lopez.mikhael হেই বিজ্ঞপ্তিটির মধ্যে কীভাবে একটি চিত্র যুক্ত করা যায় আপনার কোনও ধারণা আছে?
হাইফারফিসিবি

@ ডেনিসটান আপনি এটি করতে কেবল ফ্রেমলাউট বা রিলেটিভলআউট ব্যবহার করতে পারেন।
lopez.mikhael

8

প্রদর্শন বৃত্ত অগ্রগতি জন্য এখানে একটি সাধারণ কাস্টমভিউ। আপনি আপনার প্রকল্পের জন্য উপযুক্ত আরও সংশোধন করতে পারেন এবং অনুকূল করতে পারেন।

class CircleProgressBar @JvmOverloads constructor(
        context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0
) : View(context, attrs, defStyleAttr) {
    private val backgroundWidth = 10f
    private val progressWidth = 20f

    private val backgroundPaint = Paint().apply {
        color = Color.LTGRAY
        style = Paint.Style.STROKE
        strokeWidth = backgroundWidth
        isAntiAlias = true
    }

    private val progressPaint = Paint().apply {
        color = Color.RED
        style = Paint.Style.STROKE
        strokeWidth = progressWidth
        isAntiAlias = true
    }

    var progress: Float = 0f
        set(value) {
            field = value
            invalidate()
        }

    private val oval = RectF()
    private var centerX: Float = 0f
    private var centerY: Float = 0f
    private var radius: Float = 0f

    override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) {
        centerX = w.toFloat() / 2
        centerY = h.toFloat() / 2
        radius = w.toFloat() / 2 - progressWidth
        oval.set(centerX - radius,
                centerY - radius,
                centerX + radius,
                centerY + radius)
        super.onSizeChanged(w, h, oldw, oldh)
    }

    override fun onDraw(canvas: Canvas?) {
        super.onDraw(canvas)
        canvas?.drawCircle(centerX, centerY, radius, backgroundPaint)
        canvas?.drawArc(oval, 270f, 360f * progress, false, progressPaint)
    }
}

ব্যবহার উদাহরণ

XML

<com.example.androidcircleprogressbar.CircleProgressBar
    android:id="@+id/circle_progress"
    android:layout_width="200dp"
    android:layout_height="200dp" />

kotlin

class MainActivity : AppCompatActivity() {
    val TOTAL_TIME = 10 * 1000L

    override fun onCreate(savedInstanceState: Bundle?) {
        ...

        timeOutRemoveTimer.start()
    }

    private var timeOutRemoveTimer = object : CountDownTimer(TOTAL_TIME, 10) {
        override fun onFinish() {
            circle_progress.progress = 1f
        }

        override fun onTick(millisUntilFinished: Long) {
            circle_progress.progress = (TOTAL_TIME - millisUntilFinished).toFloat() / TOTAL_TIME
        }
    }
}

ফলাফল


5

আমি নতুন তাই আমি মন্তব্য করতে পারি না তবে অলস স্থিতিটি ভাগ করে নেওয়ার কথা ভাবি। আমি পেড্রামের আসল পদ্ধতিটিও ব্যবহার করি এবং কেবল একই ললিপপ ইস্যুতে ছুটে এসেছি। তবে অন্য পোস্টে অ্যালানভের ওয়ান লাইনের ফিক্স ছিল। এটি API21 এ কিছু ধরণের বাগ বা তদারকি। আক্ষরিকভাবে কেবল android:useLevel="true"আপনার বৃত্তের অগ্রগতিতে এক্সএমএল যুক্ত করুন। পেড্রামের নতুন পদ্ধতির এখনও সঠিক ফিক্স, তবে আমি কেবল ভেবেছিলাম যে আমি অলস ফিক্সটিও ভাগ করি।


3

একটি বিটম্যাপ তৈরি করতে এবং এটিকে চিত্র দর্শনে সেট করার জন্য এই পদ্ধতিটি ব্যবহার করে দেখুন।

private void circularImageBar(ImageView iv2, int i) {


    Bitmap b = Bitmap.createBitmap(300, 300,Bitmap.Config.ARGB_8888);
    Canvas canvas = new Canvas(b); 
    Paint paint = new Paint();

        paint.setColor(Color.parseColor("#c4c4c4"));
        paint.setStrokeWidth(10);
        paint.setStyle(Paint.Style.STROKE);
        canvas.drawCircle(150, 150, 140, paint);

        paint.setColor(Color.parseColor("#FFDB4C"));
        paint.setStrokeWidth(10);   
        paint.setStyle(Paint.Style.FILL);
        final RectF oval = new RectF();
        paint.setStyle(Paint.Style.STROKE);
        oval.set(10,10,290,290);

        canvas.drawArc(oval, 270, ((i*360)/100), false, paint);
        paint.setStrokeWidth(0);    
        paint.setTextAlign(Align.CENTER);
        paint.setColor(Color.parseColor("#8E8E93")); 
        paint.setTextSize(140);

        canvas.drawText(""+i, 150, 150+(paint.getTextSize()/3), paint); 

        iv2.setImageBitmap(b);
}

2

https://github.com/passsy/android-HoloCircularProgressBar এটি করা লাইব্রেরির একটি উদাহরণ। টেনফোর04 যেমন বলেছে, এটি কিছুটা প্রথাগত হতে হবে, এটি সরাসরি বাক্সের বাইরে সমর্থিত নয়। যদি এই লাইব্রেরিটি আপনার ইচ্ছানুযায়ী আচরণ না করে তবে আপনি এটি পছন্দসইভাবে তৈরি করার জন্য এটিকে কাঁটাচামচ করতে এবং বিশদটি সংশোধন করতে পারেন। যদি আপনি এমন কোনও কিছু প্রয়োগ করেন যা অন্যরা পুনরায় ব্যবহার করতে পারে তবে আপনি সেই একত্রীকরণটিকে আবার ফিরিয়ে আনতে একটি টান অনুরোধও জমা দিতে পারেন!


আমি এই লাইব্রেরিটিও দেখেছি কিন্তু কেবল এই ছোট্ট কাজের জন্য আর কোনও তৃতীয় পক্ষের লাইব্রেরিটি ব্যবহার করতে চাই নি। যাইহোক, আমি আপনার এবং টেনফোর04 দ্বারা উল্লিখিত দুটি পদ্ধতিই চেষ্টা করতে যাচ্ছি যে আমার জন্য কোনটি কাজ করে তা এখানে ফিরে জবাব দিন।
সৌরভ শ্রীবাস্তব

1
@ সৌরভশ্রীবাস্তব: আমি আমার অ্যাপেও একই রকম অ্যানিমেশন খুঁজছি you সমাধান কি আপনি খুঁজে পেয়েছেন? হ্যাঁ, দয়া করে সমাধান ভাগ করুন।
বাশার ৫১

@ ট্রাভিস দয়া করে এই প্রশ্নটি দেখুন - স্ট্যাকওভারফ্লো.com/ প্রশ্নগুলি / 44801280/…
কুমার

2

@ পেড্রাম, আপনার পুরানো সমাধানটি ললিপপগুলিতেও খুব ভাল কাজ করে (এবং এটি নতুনের চেয়ে ভাল কারণ এটি দূরবর্তী দৃশ্যের সহ সর্বত্র ব্যবহারযোগ্য) কেবল আপনার circular_progress_bar.xmlকোডটি এতে পরিবর্তন করুন :

<?xml version="1.0" encoding="utf-8"?>
<rotate xmlns:android="http://schemas.android.com/apk/res/android"
    android:fromDegrees="270"
    android:toDegrees="270">
    <shape
        android:innerRadiusRatio="2.5"
        android:shape="ring"
        android:thickness="1dp"
        android:useLevel="true"> <!-- Just add this line -->
        <gradient
            android:angle="0"
            android:endColor="#007DD6"
            android:startColor="#007DD6"
            android:type="sweep"
            android:useLevel="false" />
    </shape>
</rotate>

2
অ্যান্ড্রয়েডে দুর্দান্ত মন্তব্য: ইউজলিভেল = "সত্য" !!! আপনি আমাকে অ্যান্ড্রয়েড 5 এ গুরুত্বপূর্ণ সমস্যা সমাধানে সহায়তা করেছেন! আপনাকে অনেক ধন্যবাদ!
দিমিত্রিকানুনিকফফ

2
package com.example.ankitrajpoot.myapplication;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.ProgressBar;


public class MainActivity extends Activity {

    private ProgressBar spinner;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        spinner=(ProgressBar)findViewById(R.id.progressBar);
        spinner.setVisibility(View.VISIBLE);
    }
}

XML

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loadingPanel"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center">

<ProgressBar
    android:id="@+id/progressBar"

    android:layout_width="48dp"
    style="?android:attr/progressBarStyleLarge"
    android:layout_height="48dp"
    android:indeterminateDrawable="@drawable/circular_progress_bar"
    android:indeterminate="true" />
</RelativeLayout>





<?xml version="1.0" encoding="utf-8"?>
<rotate
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:pivotX="50%"
    android:pivotY="50%"
    android:fromDegrees="0"
    android:toDegrees="1080">
    <shape
        android:shape="ring"
        android:innerRadiusRatio="3"
        android:thicknessRatio="8"
        android:useLevel="false">

        <size
            android:width="56dip"
            android:height="56dip" />

        <gradient
            android:type="sweep"
            android:useLevel="false"
            android:startColor="@android:color/transparent"
            android:endColor="#1e9dff"
            android:angle="0"
            />

    </shape>
</rotate>

আপনি প্রস্তাবিত সমাধানটির বিবরণ যুক্ত করে কসাইডারকে সল্ট করেছেন।
il_raffa

2

উপাদান উপাদান লাইব্রেরিতে আপনি ProgressIndicatorএকটি Widget.MaterialComponents.ProgressIndicator.Circular.Determinateশৈলী দিয়ে এটি ব্যবহার করতে পারেন ।

কিছুটা এইরকম:

<com.google.android.material.progressindicator.ProgressIndicator
    style="@style/Widget.MaterialComponents.ProgressIndicator.Circular.Determinate"
    app:indicatorColor="@color/...."
    app:trackColor="@color/...."
    app:circularRadius="64dp"/>

আপনি এই বৈশিষ্ট্যগুলি ব্যবহার করতে পারেন:

  • circularRadius: বৃত্তাকার অগ্রগতি সূচকের ব্যাসার্ধ নির্ধারণ করে
  • trackColor: অগ্রগতি ট্র্যাকের জন্য ব্যবহৃত রঙ। যদি সংজ্ঞায়িত না করা হয় তবে এটিতে সেট করা হবে indicatorColorএবং android:disabledAlphaথিমটি থেকে প্রয়োগ করা হবে ।
  • indicatorColor: নির্ধারণ / অনির্দিষ্ট মোডে সূচকের জন্য ব্যবহৃত একক রঙ। ডিফল্টরূপে এটি থিম প্রাথমিক রঙ ব্যবহার করে

এখানে চিত্র বর্ণনা লিখুন

সূচকটিতে progressIndicator.setProgressCompat((int) value, true);মান আপডেট করতে ব্যবহার করুন ।

দ্রষ্টব্য: এটির জন্য কমপক্ষে সংস্করণ প্রয়োজন 1.3.0-alpha01


প্রয়োজনীয় গ্রন্থাগার নির্ভরতা কী?
বিক্রম


আমি বিল্ড.gradle এ 'com.google.android.matory: উপাদান: 1.1.0' যোগ করেছি তবে তবুও প্রগতিশক্তি প্রদর্শিত হয় না।
বিক্রম

@ বিক্রম যেমন উত্তরে বর্ণিত হয়েছে: এর কমপক্ষে সংস্করণ প্রয়োজন 1.3.0-alpha01
গ্যাব্রিয়েল মেরিওটি

1

পরিবর্তন

android:useLevel="false"

প্রতি

android:useLevel="true"

সঙ্গে দ্বিতীয় sahpe জন্য id="@android:id/progress

আশা করি এটা কাজ করবে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.