Як наладзіць індыкатар выканання Android

Я працую над дадаткам, у якім я хачу, каб паказаць ProgressBar , але я хачу, каб замяніць па змаўчанні Android ProgressBar ст.

Бо я магу наладзіць ProgressBar ?

Ці трэба мне нейкія графікі і анімацыі для гэтага?

Я прачытаў наступны пост, але не мог прымусіць яго працаваць:

бар Карыстацкі Прагрэс Android

125
Паспрабуйце гэты звычай бар прагрэс ProgressWheel
дададзена аўтар neeraj kirola, крыніца

8 адказы

I have described this with code and an example in this blog: Customized Progress Bar In Android

Індывідуальная налада ProgressBar патрабуе вызначэння атрыбуту або ўласцівасці для фону і прагрэсу вашага прагрэсу бар.

Create an xml file named customprogressbar.xml in your res->drawable folder:

<�Моцны> custom_progressbar.xml



    <!-- Define the background properties like color etc -->
    
    
        
    
   

  <!-- Define the progress properties like start color, end color etc -->
  
    
        
            
        
    
    
 

Зараз вам трэба ўсталяваць progressDrawable нерухомасці ў customprogressbar.xml (выцяжка)

Вы можаце зрабіць гэта ў файле xml або ў дзейнасці (падчас выканання).

Выканайце наступныя дзеянні ў вашым XML:


<�Моцны> Падчас выканання зрабіце наступнае

// Get the Drawable custom_progressbar                     
    Drawable draw=res.getDrawable(R.drawable.custom_progressbar);
// set the drawable as progress drawable
    progressBar.setProgressDrawable(draw);

Edit: выпраўлена размяшчэнне XML

237
дададзена
Ці можна мець розную вышыню 2 элементаў у папластовым спісе?
дададзена аўтар android developer, крыніца
Чаму неабходна ўсталяваць Drawable прагрэс падчас выканання, калі гэта магчыма зрабіць гэта на файл XML?
дададзена аўтар Nicolás Arias, крыніца
@hirengamit ВЭ «Рэсурс». Ваша памылка, верагодна, азначае, што файл не можа быць знойдзены. "C: /whereYourProjectFolderIs/res/drawable/customprogressbar.‌ XML" <- не можа быць знойдзены. Калі ёсць, паспрабуйце «ачысціць» ваш праект, ён перарабляе файл рэсурсаў.
дададзена аўтар Karl Morrison, крыніца
@ NicolásArias можа быць, вы хочаце змяніць свой знешні выгляд, па любой магчымай прычыне (напрыклад, пераход ад зялёнага, як у «чакае адказу» на чырвоны, як у «чаканні апрацоўкі памылак»)
дададзена аўтар ocramot, крыніца
што дазволу ?? res.getDrawable не знойдзены
дададзена аўтар hiren gamit, крыніца
Вы можаце праверыць гэты падручнік занадта: tiemenschut.com/how -у-наладзіць-андроіда-прагрэс-бары Ён змяшчае некалькі творчых прыкладаў на прагрэс бараў у Android.
дададзена аўтар TiemenSchut, крыніца
@Johnson, Рэз стаіць за рэсурс. Калі замяніць радок Drawable маляваць = GetResources() getDrawable (R.drawable.custom_progressbar). яна павінна працаваць.
дададзена аўтар Erwin Lengkeek, крыніца

У выпадку комплекснага ProgressBar , як гэта,

enter image description here

выкарыстоўваць ClipDrawable .

<�Р> Заўвага: Я не выкарыстоўваў ProgressBar тут, у гэтым прыкладзе. Я дасягнуў   гэта з дапамогай ClipDrawable прымацаваўшы малюнак з кодам <> Анімацыя . </р>

А Drawable , што заціскі іншы Drawable на аснове гэтага кода <> Drawable 'ы бягучае значэнне ўзроўню. Вы можаце кантраляваць, колькі дзіця Drawable адсякаецца па шырыні і вышыні на аснове ўзроўню, а таксама сілы цяжару, каб кантраляваць, дзе яна знаходзіцца ў яго агульнай ёмістасці. <�Код> Найбольш часта выкарыстоўваецца для рэалізацыі рэчы, як прагрэс бараў , павялічваючы ўзровень у выцяжцы з setLevel() .

<�Р> Заўвага: малюем абразаецца цалкам і не відаць, калі ўзровень 0   і цалкам раскрываецца, калі ўзровень 10000.

Я выкарыстаў гэтыя два малюнка, каб зрабіць гэта CustomProgressBar .

scall.png

scall.png

ballon_progress.png

ballon_progress.png

MainActivity.java

public class MainActivity extends ActionBarActivity {

private EditText etPercent;
private ClipDrawable mImageDrawable;

// a field in your class
private int mLevel = 0;
private int fromLevel = 0;
private int toLevel = 0;

public static final int MAX_LEVEL = 10000;
public static final int LEVEL_DIFF = 100;
public static final int DELAY = 30;

private Handler mUpHandler = new Handler();
private Runnable animateUpImage = new Runnable() {

    @Override
    public void run() {
        doTheUpAnimation(fromLevel, toLevel);
    }
};

private Handler mDownHandler = new Handler();
private Runnable animateDownImage = new Runnable() {

    @Override
    public void run() {
        doTheDownAnimation(fromLevel, toLevel);
    }
};

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

    etPercent = (EditText) findViewById(R.id.etPercent);

    ImageView img = (ImageView) findViewById(R.id.imageView1);
    mImageDrawable = (ClipDrawable) img.getDrawable();
    mImageDrawable.setLevel(0);
}

private void doTheUpAnimation(int fromLevel, int toLevel) {
    mLevel += LEVEL_DIFF;
    mImageDrawable.setLevel(mLevel);
    if (mLevel <= toLevel) {
        mUpHandler.postDelayed(animateUpImage, DELAY);
    } else {
        mUpHandler.removeCallbacks(animateUpImage);
        MainActivity.this.fromLevel = toLevel;
    }
}

private void doTheDownAnimation(int fromLevel, int toLevel) {
    mLevel -= LEVEL_DIFF;
    mImageDrawable.setLevel(mLevel);
    if (mLevel >= toLevel) {
        mDownHandler.postDelayed(animateDownImage, DELAY);
    } else {
        mDownHandler.removeCallbacks(animateDownImage);
        MainActivity.this.fromLevel = toLevel;
    }
}

public void onClickOk(View v) {
    int temp_level = ((Integer.parseInt(etPercent.getText().toString())) * MAX_LEVEL)/100;

    if (toLevel == temp_level || temp_level > MAX_LEVEL) {
        return;
    }
    toLevel = (temp_level <= MAX_LEVEL) ? temp_level : toLevel;
    if (toLevel > fromLevel) {
       //cancel previous process first
        mDownHandler.removeCallbacks(animateDownImage);
        MainActivity.this.fromLevel = toLevel;

        mUpHandler.post(animateUpImage);
    } else {
       //cancel previous process first
        mUpHandler.removeCallbacks(animateUpImage);
        MainActivity.this.fromLevel = toLevel;

        mDownHandler.post(animateDownImage);
    }
}
}

activity_main.xml





    

    <button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ok"
        android:onClick="onClickOk" />





    

    


clip_source.xml

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

In case of complex HorizontalProgressBar just change cliporientation in clip_source.xml like this,

android:clipOrientation="horizontal"

Вы можаце спампаваць поўную дэманстрацыю з .

29
дададзена
Знайсці Id віджэт, ваша выключэнне будзе вырашана.
дададзена аўтар Vikash Sharma, крыніца
код сапраўды цікава, але гэта дае мне NullPointer выключэнне на аб'екце IMG:
дададзена аўтар Parth Anjaria, крыніца

ў вашым XML


І ў Рэз/значэння/styles.xml :

 
        
       
    

І custom_progress_bar_horizontal з'яўляецца xml захоўваецца ў выцяжцы тэчцы, якая вызначае ваш карыстацкі прагрэс бар. Больш падрабязна паглядзець блог .

Я спадзяюся, што гэта дапаможа.

26
дададзена
Link працуе выдатна.
дададзена аўтар Martin Marconcini, крыніца

<�Моцны> Налада колеру ProgressBar, а менавіта ў выпадку тыпу круцільніка патрэбен файл xml і ініцыявальныя коды ў іх адпаведных файлаў Java.

Стварыце файл xml і назваць яго як progressbar.xml

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


    

        
        
    


Выкарыстоўвайце наступны код, каб атрымаць блешню ў розных чаканых color.Here мы выкарыстоўваем hexcode для адлюстравання кок ў сінім колеры.

Progressbar spinner = (ProgressBar) progrees.findViewById(R.id.spinner);
spinner.getIndeterminateDrawable().setColorFilter(Color.parseColor("#80DAEB"),
                android.graphics.PorterDuff.Mode.MULTIPLY);
8
дададзена
Ці ёсць спосаб набору гэтага колеру фільтр для ўсяго прыкладання, я маю на ўвазе, у кожным ProgressBar, як усталяваць яго ў стылях або СТГЕ? Thnx
дададзена аўтар Hugo, крыніца

Ёсць два тыпу прагрэсу бараў называюцца дэтэрмінаваных прагрэс бар (фіксаваная працягласць) і нявызначаны прагрэс бар (невядомы тэрмін).

Для абодвух уводзімага каэфіцыент тыпаў прагрэсу бара можа быць зменены шляхам вызначэння выцяжкі, як XML-рэсурс. Вы можаце знайсці больш падрабязную інфармацыю аб ходзе штрыхавых стыляў і налады на HTTP://www.zoftino.com/android-progressbar-and-custom-progressbar-examples .

<�Моцны> Налада фіксаванага або гарызантальная паласа прагрэсу:

Ніжэй xml з'яўляецца выцяжкай рэсурсу для гарызантальнага прагрэсу бара налады.

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

    
        
            
            
            
        
    
    
        
            
                
                
                
            
        
    

<�Моцнага> Налада нявызначанага прагрэс бар

Ніжэй xml з'яўляецца выцяжкай рэсурсу для кругавога прагрэсу бара налады.

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

    
                
                    
                        
                        
                    
                           
    

3
дададзена

Стварэнне карыстацкіх ProgressBar як hotstar.

  1. Дадаць Прагрэс бар у файле макета і ўсталюйце indeterminateDrawable з расцяжнай файл.

activity_main.xml


  1. Стварэнне новага файла xml у дазволе \ выцяжка

custom_progress_bar.xml

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

    
       

       
    


3
дададзена

Найпросты спосаб стварыць наладзіць індыкатар ў Android:

  1. Initialize and show dialog:

    MyProgressDialog progressdialog = new MyProgressDialog(getActivity());
    progressdialog.show();
    
  2. Create method:

    public class MyProgressDialog extends AlertDialog {
          public MyProgressDialog(Context context) {
              super(context);
              getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
          }
    
          @Override
          public void show() {
              super.show();
              setContentView(R.layout.dialog_progress);
          }
    }
    
  3. Create layout XML:

    
    
        
    
          
    
          
        
    
    
  4. Create shape progresscustombg.xml and put res/drawable:

    <?xml version="1.0" encoding="utf-8"?>
    
    
        
            
    
            
        
    
    
    
2
дададзена

Калі вы хочаце зрабіць гэта ў кодзе, вось прыклад:

pd = new ProgressDialog(MainActivity.this);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
pd.getWindow().setGravity(Gravity.CENTER_HORIZONTAL|Gravity.CENTER_VERTICAL);
TextView tv = new TextView(this);
tv.setTextColor(Color.WHITE);
tv.setTextSize(20);
tv.setText("Waiting...");
pd.setCustomTitle(tv);
pd.setIndeterminate(true);
pd.show();

Выкарыстанне TextView дае магчымасць змяніць колер, памер і шрыфт тэксту. У адваротным выпадку вы можаце проста патэлефанаваць setMessage (), як звычайна.

0
дададзена