加载活动时的进度条

时间:2016-11-08 21:57:55

标签: android progress-bar

我有一些问题。 在主要活动中,我创建按钮

 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 - 是学期的第一个字母。它在Activiti 终端中传输,其中可以选择此字母的数据集。

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);
                }
            }


        }
    }

但是在一系列词汇中,在屏幕“冻结”时。如何在此褪色时制作标准progresbar?了解应用程序运行的用户。

1 个答案:

答案 0 :(得分:1)

使用AsyncTask。

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

你很可能不得不重新安排你的代码,但如果你的for循环长时间运行,那就是“冻结”你的应用程序。 AsyncTask有3种方法可以实现这一目标。在onPreExecute中显示您的进度条。然后在doInBackground()中,您将需要执行for循环逻辑。在onPostExecute()中,您可以将创建的所有按钮添加到视图中。您必须仅在UI线程上执行前/后执行方法中修改UI,而在UI线程中不执行doInBackground,并且如果您尝试修改UI,则会抛出异常。