加载时的进度条 activity

Progressbar when load activity

我有一些问题。 在主要 activity 我创建按钮

 Button button=new Button(this);
                button.setId(i);
                button.setWidth(20);
                button.setBackgroundColor(Color.TRANSPARENT);
                button.setLayoutParams(params);
                button.setText(nazv);
                button.setTextSize(22);
                button.setTextColor(0xFF2C85A6);
                button.setOnClickListener(new View.OnClickListener() {
                    public void onClick(View view) {

                        Intent is = new Intent(getApplicationContext(), termin.class);
                        is.putExtra("LetVariable", nazv);
                        startActivity(is);
                    }
                });

LetVariable - 是术语的第一个字母。是在Activititermin中传输的,这里有选择这个字母的数据集。

public class termin extends AppCompatActivity {

        String[] mArray;

        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.termin);
            getSupportActionBar().hide();
            Intent mIntent = getIntent();
            String LetValue = mIntent.getStringExtra("LetVariable");

            int length =0;

            length =getResources().getStringArray(R.array.terms).length;

            mArray = getResources().getStringArray(R.array.terms);
            final LinearLayout linearLayout=(LinearLayout)findViewById(R.id.buttonlayout);

            TextView opisTextView = (TextView)findViewById(R.id.TermTextView);
            opisTextView.setText("Terms starting with "+LetValue);

            for(int i=0;i<length;i++){

                //

                final String nazv = mArray[i];
                final String[] splittedItem = nazv.split("::");
                final String fLet=Character.toString(splittedItem[0].charAt(0));




                if(fLet.equals(LetValue))

                {

                Button button=new Button(this);
                button.setId(i);



                    button.setText(splittedItem[0]);
                    button.setBackgroundColor(Color.TRANSPARENT);
                    button.setTextSize(19);
                    button.setGravity(Gravity.LEFT);
                    button.setTextColor(0xFF2C85A6);
                    button.setOnClickListener(new View.OnClickListener() {
                        public void onClick(View view) {

                            Intent is = new Intent(getApplicationContext(), termin_full.class);
                            is.putExtra("fVariableName", nazv);
                            startActivity(is);
                        }
                    });


                linearLayout.addView(button);
                }
            }


        }
    }

但是在很多单词的数组中,在 Screen "freezes" 的时候。如何在这种褪色时制作标准的进度条?了解应用程序工作的用户。

使用 AsyncTask。

https://developer.android.com/reference/android/os/AsyncTask.html

您很可能需要稍微重新安排您的代码,但如果您的 for 循环很长 运行 那就是 "freezing" 您的应用程序。 AsyncTask 有 3 个方法来完成这个。在 onPreExecute 中显示您的进度条。然后在 doInBackground() 中,您将需要执行 for 循环逻辑。在 onPostExecute() 中,您可以将创建的所有按钮添加到视图中。您只能修改 pre/post 执行方法中的 UI,因为它们在 UI 线程上执行,而 doInBackground 不会在 UI 线程中执行,如果您尝试修改 UI。