在 Android 中,我想在没有标题和消息的情况下在登录期间使用自定义 ProgressDialog
框。我无法让它正常工作。
我想要它像下面的 gif(注意没有标题或消息):
如何在我的代码中应用它?
我的代码(不起作用):
<Progressbar
android:id="@+id/progressBar2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:indeterminateDrawable="@drawable/progress_custom"
android:indeterminateOnly="false" />
这是我的progress_custom.xml
:
<?xml version="1.0" encoding="utf-8"?>
<animated-rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:pivotX="50%"
android:pivotY="50%" >
<shape
android:innerRadiusRatio="4"
android:shape="ring"
android:thicknessRatio="5.333"
android:useLevel="false" >
<size
android:height="18dip"
android:width="18dip" />
<gradient
android:centerColor="#886688cc"
android:centerY="0.50"
android:endColor="#ff6688cc"
android:startColor="#006688cc"
android:type="sweep"
android:useLevel="false" />
</shape>
</animated-rotate>
我想要它以便在我登录时显示此 ProgressDialog。以下是我的使用方法:
public class MainSerenaActivity extends Activity {
EditText uname;
EditText pass;
EditText server;
Button login;
String strUname;
String unamePass;
String strPass;
String strServer;
String strServer_fn;
String unamepass;
String uPass;
String encPass;
TextView reg_txt;
MyApplication app;
String passwde;
ProgressDialog pd;
CheckBox servercheck_btn;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// getActionBar().setDisplayHomeAsUpEnabled(true);
uname = (EditText) findViewById(R.id.user_edt_lg);
pass = (EditText) findViewById(R.id.pass_edt_lg);
server = (EditText) findViewById(R.id.server);
login = (Button) findViewById(R.id.login);
servercheck_btn = (CheckBox) findViewById(R.id.checkBox1);
pd=(ProgressBar)findViewById(R.id.progressBar2);
login.setOnClickListener(new View.OnClickListener() {
@SuppressLint("ShowToast")
public void onClick(View v) {
strUname = uname.getText().toString().trim();
strPass = pass.getText().toString().trim();
MyApplication.setUserID(strUname);
MyApplication.setPassWord(strPass);
if (isInternetAvailable()) {
if ((uname.getText().toString()).equals("")
&& (pass.getText().toString()).equals("")) {
Toast toast = Toast.makeText(MainSerenaActivity.this,
"please enter username & password ",
Toast.LENGTH_LONG);
toast.show();
} else {
MyThread t = new MyThread(MainSerenaActivity.this, 0);
pd=ProgressDialog.show(MainSerenaActivity.this, "", "");
t.start();
Toast.makeText(MainSerenaActivity.this,
"Successfully login", Toast.LENGTH_SHORT)
.show();
uname.setText("");
pass.setText("");
server.setText("");
servercheck_btn.setChecked(false);
}
}
else {
Toast toast = Toast
.makeText(
MainSerenaActivity.this,
"No internet available.Please turn on the internet",
Toast.LENGTH_LONG);
toast.show();
}
}
});
}
public boolean isInternetAvailable() {
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo netInfo = cm.getActiveNetworkInfo();
if (netInfo != null && netInfo.isConnectedOrConnecting()) {
return true;
}
return false;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
class MyThread extends Thread {
Context con;
int but;
Intent in;
MyThread(Context con, int but) {
this.con = con;
this.but = but;
}
public void run() {
try {
switch (but) {
case 0:
in = new Intent(MainSerenaActivity.this, Second_Btn.class);
if (servercheck_btn.isChecked()) {
if ((server.getText().toString()).equals("")) {
Toast toast = Toast.makeText(
MainSerenaActivity.this,
"please enter server ", Toast.LENGTH_SHORT);
toast.show();
} else {
strServer = server.getText().toString().trim();
strServer_fn = "https://" + strServer;
MyApplication.setServer(strServer_fn);
}
} else {
if ((server.getText().toString()).equals("")) {
strServer_fn = url;
MyApplication.setServer(strServer_fn);
} else {
strServer = server.getText().toString().trim();
strServer_fn = url;
MyApplication.setServer(strServer_fn);
}
}
startActivity(in);
break;
}
}
catch (Exception e) {
}
pd.dismiss();
}
}
}
但是 gif 仍然显示标题和消息。我只想要微调器,我该怎么做?
首先创建一个 Activity indocator 类。创建如下所示的构造函数。
public ActivityIndicator(Context context) {
super(context, android.R.style.Theme_Translucent_NoTitleBar_Fullscreen);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activityindicator_dialog);
setCancelable(true);
RelativeLayout main = (RelativeLayout) findViewById(R.id.main);
main.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
}
现在你想在哪里设置进度对话框然后把下面的代码。您将获得自定义的进度对话框。
private static ActivityIndicator activityIndicator;
public static void hideActivityViewer() {
if (activityIndicator != null) {
activityIndicator.dismiss();
}
}
public static void showActivityViewer(Context context) {
if (activityIndicator == null) {
activityIndicator = new ActivityIndicator(context);
}
activityIndicator.show();
}
public static void clearDialogs() {
activityIndicator = null;
}
Activity 指示器的xml如下
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent">
<RelativeLayout android:gravity="center"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:id="@+id/main" android:background="@drawable/overlay_bck">
<TextView android:text="@string/loading"
android:textSize="15sp" android:textColor="#FFFFFF" android:id="@+id/text"
android:textStyle="bold" android:layout_width="fill_parent"
android:layout_height="wrap_content" android:gravity="center_horizontal"></TextView>
<ProgressBar android:id="@+id/progress" android:layout_below="@+id/text"
style="@android:style/Widget.ProgressBar" android:layout_centerHorizontal="true"
android:layout_width="wrap_content" android:layout_height="wrap_content" />
</RelativeLayout>
我是一名优秀的程序员,十分优秀!