我正在尝试加载一系列5个点来表示正在进行中,但是它们并没有按顺序依次加载,我不知道为什么。
来源:
public class UpdateActivity extends Activity implements OnClickListener {
public static int TotalSteps = 8;
private TelephonyManager tm;
private Button mUpdateButton = null;
private Button mAssistUpdateButton = null;
private Button mAssistInstrButton = null;
private TextView mReadAgainButton = null;
private int mInstructionNumber = 0;
AlertDialog mConfirmAlert = null;
private NetworkTask task;
private AnimationDrawable loadingAnimation;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
tm = (TelephonyManager) getSystemService(TELEPHONY_SERVICE);
int networkType = tm.getNetworkType();
int phoneType = tm.getPhoneType();
int version = android.os.Build.VERSION.SDK_INT;
if (phoneType == TelephonyManager.PHONE_TYPE_CDMA
|| (phoneType != TelephonyManager.PHONE_TYPE_GSM
&& networkType != TelephonyManager.NETWORK_TYPE_GPRS
&& networkType != TelephonyManager.NETWORK_TYPE_EDGE
&& networkType != TelephonyManager.NETWORK_TYPE_HSDPA
&& networkType != TelephonyManager.NETWORK_TYPE_HSPA
&& networkType != TelephonyManager.NETWORK_TYPE_HSPAP
&& networkType != TelephonyManager.NETWORK_TYPE_HSUPA
&& networkType != TelephonyManager.NETWORK_TYPE_UMTS && networkType != TelephonyManager.NETWORK_TYPE_LTE)) {
// If the phone type is CDMA or
// the phone phone type is not GSM and the network type is none of
// the network types indicated in the statement
// Display incompatibility message
showAlert(getString(R.string.incomp_sm_dialog));
// Network type is looked because some tablets have no phone type.
// We rely on network type in such cases
} else if (!(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT
|| (tm.getSimOperator())
.equals(getString(R.string.numeric_tmo)) || (tm
.getSimOperator()).equals(getString(R.string.numeric_att)))) {
// if SIM is present and is NOT a T-Mo network SIM,
// display Error message alert indicating to use SM SIM
showAlert(getString(R.string.insert_sm_dialog));
}// No SIM or SIM with T-Mo MNC MCC present
else if (version < VERSION_CODES.ICE_CREAM_SANDWICH) {
// Initial UI setup for versions lower than ICS
setContentView(R.layout.update);
mUpdateButton = (Button) findViewById(R.id.update_button);
mUpdateButton.setOnClickListener(this);
} else {// ICS and up
// task.execute();
if ((tm.getSimOperator()).equals(getString(R.string.numeric_tmo))
|| (tm.getSimOperator())
.equals(getString(R.string.numeric_att))) {
task = new NetworkTask();
task.execute("");
// Device has T-Mo network SIM card MCC and MNC correctly
// populated
// Reduce number of steps to 6
TotalSteps = 6;
}
//
// Initial UI setup for ICS and up
setContentView(R.layout.updating);
// This image view has the updating text to be progressively
// updated
// with dots addition
ImageView loading = (ImageView) findViewById(R.id.loading_empty1);
// Set updating button to drawable animation
loading.setBackgroundResource(R.drawable.updating1);
loadingAnimation = (AnimationDrawable) loading.getBackground();
loadingAnimation.setOneShot(false);
loadingAnimation.start();
ImageView loading2 = (ImageView) findViewById(R.id.loading_empty2);
// Set updating button to drawable animation
loading2.setBackgroundResource(R.drawable.updating2);
loadingAnimation = (AnimationDrawable) loading2.getBackground();
loadingAnimation.start();
ImageView loading3 = (ImageView) findViewById(R.id.loading_empty3);
// Set updating button to drawable animation
loading3.setBackgroundResource(R.drawable.updating3);
loadingAnimation = (AnimationDrawable) loading3.getBackground();
loadingAnimation.start();
ImageView loading4 = (ImageView) findViewById(R.id.loading_empty4);
// Set updating button to drawable animation
loading4.setBackgroundResource(R.drawable.updating4);
loadingAnimation = (AnimationDrawable) loading4.getBackground();
loadingAnimation.start();
ImageView loading5 = (ImageView) findViewById(R.id.loading_empty5);
// Set updating button to drawable animation
loading5.setBackgroundResource(R.drawable.updating5);
loadingAnimation = (AnimationDrawable) loading5.getBackground();
loadingAnimation.start();
// String assistUpdate = getString(R.string.apn_app_text_cta2);
// CharSequence styledText = Html.fromHtml(assistUpdate);
// xtView assistText = (TextView)
// findViewById(R.id.apn_app_text_cta2);
// sistText.setText(styledText);
// mAssistUpdateButton = (Button)
// findViewById(R.id.assist_update_btn);
//mAssistUpdateButton.setOnClickListener(this);
}
}
public void onClick(View v) {
if (v == mUpdateButton) {
// Update button for versions lower than ICS is selected
// setContentView(R.layout.updating);
onClickMethod(v);
Intent i = new Intent(this, ConfigFinalActivity.class);
startActivity(i);
finish();
} else if (v == mAssistUpdateButton) {
// Update button for ICS and up is selected
// Get the TextView in the Assist Update UI
TextView tv = (TextView) findViewById(R.id.apn_app_text_cta2);
String text = "";
CharSequence styledText = text;
switch (mInstructionNumber) {
case 0:
// Retrieve the instruction string resource corresponding the
// 2nd set of instructions
text = String.format(getString(R.string.apn_app_text_instr),
TotalSteps);
styledText = Html.fromHtml(text);
// Update the TextView with the correct set of instructions
tv.setText(styledText);
// Increment instruction number so the correct instructions
// string resource can be retrieve the next time the update
// button is pressed
mInstructionNumber++;
break;
case 1:
text = getString(R.string.apn_app_text_instr2);
styledText = Html.fromHtml(text);
tv.setText(styledText);
// Increment instruction number so the correct instructions
// string resource can be retrieve the next time the update
// button is pressed
mInstructionNumber++;
break;
case 2:
// Final set of instructions-Change to the corresponding layout
setContentView(R.layout.assist_instructions);
String assistUpdateInstr = String.format(
getString(R.string.apn_app_text_instr3), TotalSteps);
styledText = Html.fromHtml(assistUpdateInstr);
TextView assistInstrText = (TextView) findViewById(R.id.updated_text);
assistInstrText.setText(styledText);
mAssistInstrButton = (Button) findViewById(R.id.assist_instr_btn);
mReadAgainButton = (TextView) findViewById(R.id.read_again_btn);
mAssistInstrButton.setOnClickListener(this);
mReadAgainButton.setOnClickListener(this);
}
} else if (v == mAssistInstrButton) {
// "LET'S DO THIS" Button in final instructions screen for ICS and
// up is selected
// Create ConfigActivity Intent
Intent i = new Intent(this, ConfigFinalActivity.class);
// Invoke ConfigActivity Intent to start the assisted update
startActivity(i);
finish();
} else if (v == mReadAgainButton) {
// go back to 1st set of instructions if read again is selected
mInstructionNumber = 0;
setContentView(R.layout.assist_update);
String assistUpdate = getString(R.string.apn_app_text_cta2);
CharSequence styledText = Html.fromHtml(assistUpdate);
TextView assistText = (TextView) findViewById(R.id.apn_app_text_cta2);
assistText.setText(styledText);
mAssistUpdateButton = (Button) findViewById(R.id.assist_update_btn);
mAssistUpdateButton.setOnClickListener(this);
}
}
public void onClickMethod(View v) {
mUpdateButton = (Button) findViewById(R.drawable.btn_update_active_hdpi);
}
private void showAlert(String message) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage(message).setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
UpdateActivity.this.finish();
}
});
mConfirmAlert = builder.create();
mConfirmAlert.show();
}
}
updating.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/background"
android:orientation="vertical" >
<TextView
android:id="@+id/updating_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_centerVertical="true"
android:gravity="center"
android:text="@string/updating_text"
android:textColor="#000000"
android:textSize="14sp" />
<ImageView
android:id="@+id/loading_empty1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="150dp"
android:layout_toLeftOf="@+id/loading_empty2"
android:layout_marginBottom="20dp"
android:layout_marginRight="15dp"
android:background="@drawable/loading_empty"
/>
<ImageView
android:id="@+id/loading_empty3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/loading_empty2"
android:layout_centerHorizontal="true"
android:background="@drawable/loading_empty"
android:layout_marginRight="15dp"
/>
<ImageView
android:id="@+id/loading_empty2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/loading_empty1"
android:layout_toLeftOf="@+id/loading_empty3"
android:background="@drawable/loading_empty"
android:layout_marginRight="15dp"
/>
<ImageView
android:id="@+id/loading_empty4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/loading_empty3"
android:layout_toRightOf="@+id/loading_empty3"
android:background="@drawable/loading_empty"
android:layout_marginRight="15dp"
/>
<ImageView
android:id="@+id/loading_empty5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@+id/loading_empty4"
android:layout_toRightOf="@+id/loading_empty4"
android:background="@drawable/loading_empty"
/>
</RelativeLayout>
updating1.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/loading_empty" android:duration="500" />
<item android:drawable="@drawable/loading_full" android:duration="1000" />
</animation-list>
updating2.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/loading_empty" android:duration="1500" />
<item android:drawable="@drawable/loading_full" android:duration="2000" />
</animation-list>
updating3.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/loading_empty" android:duration="2500" />
<item android:drawable="@drawable/loading_full" android:duration="3000" />
</animation-list>
updating4.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/loading_empty" android:duration="3500" />
<item android:drawable="@drawable/loading_full" android:duration="4000" />
</animation-list>
updating5.xml:
<animation-list xmlns:android="http://schemas.android.com/apk/res/android"
android:oneshot="false">
<item android:drawable="@drawable/loading_empty" android:duration="4500" />
<item android:drawable="@drawable/loading_full" android:duration="5000" />
</animation-list>
答案 0 :(得分:0)
您使用的持续时间错误。它表示动画的长度,而不是开始时间。所以,除了你的一个xml动画之外,除去所有动画。您可以为每个动画重复使用相同的内容。关键是,动画需要在每个点的不同时间开始。
要在不同时间开始动画,请使用Handler
,并为每个点调用postDelayed Runnable
,在正确的View
上执行动画当前点,并重用相同的动画xml。对于第一个点使用延迟0ms或低的东西,对于第二个点使用第一个点的延迟+动画的总持续时间(500ms?1000ms?无论你在xml中设置的......),对于第n个点使用n-1点的延迟和上述动画的总持续时间