加载时的进度条 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。
我有一些问题。 在主要 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。