ProgressDialog 是否可绘制? GIF 什么的?
ProgressDialog as drawable ? GIF or something?
我正在注册 activity,我在其中使用可绘制资源进行交互。 TextWatcher 和一些编码,然后(示例):
etPass.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_lock_open, 0, R.drawable.icon_close, 0);
现在,我做了一个任务来检查数据库中的电子邮件。我想在此任务获得结果时显示 ProgressDialog。我尝试使用 gif,但动画效果不佳。我想要这样的东西:
注意:我想通过 "setCompoundDrawablesWithIntrinsicBounds" 完成此操作,一旦它已经格式化并适合该字段。但我对其他方式持开放态度。
谢谢!
如果您愿意获取 GIF 并将其拆分为帧,AnimationDrawable class 将满足您的需要。
以下是我的做法:
为 EditText
和 ProgressBar
创建自定义 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" >
<EditText
android:layout_width="match_parent"
android:id="@+id/edit"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_launcher"
android:singleLine="true" />
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:id="@+id/progress"
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/edit"
android:layout_alignBottom="@id/edit"
android:layout_alignRight="@id/edit"/>
</RelativeLayout>
然后,将其包含在 activity
<include
android:id="@+id/field1"
layout="@layout/progress_edittext"
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
然后在 onCreate()
中检索它
public class MainActivity extends ActionBarActivity {
private View field1;
private EditText edit;
private ProgressBar progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
field1 = findViewById(R.id.field1);
edit = (EditText) field1.findViewById(R.id.edit);
progress = (ProgressBar) field1.findViewById(R.id.progress);
edit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
progress.setVisibility(View.VISIBLE);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
@Override
public void afterTextChanged(Editable s) {
// YOUR LOGIC GOES HERE
}
});
}
}
我正在注册 activity,我在其中使用可绘制资源进行交互。 TextWatcher 和一些编码,然后(示例):
etPass.setCompoundDrawablesWithIntrinsicBounds(R.drawable.icon_lock_open, 0, R.drawable.icon_close, 0);
现在,我做了一个任务来检查数据库中的电子邮件。我想在此任务获得结果时显示 ProgressDialog。我尝试使用 gif,但动画效果不佳。我想要这样的东西:
注意:我想通过 "setCompoundDrawablesWithIntrinsicBounds" 完成此操作,一旦它已经格式化并适合该字段。但我对其他方式持开放态度。
谢谢!
如果您愿意获取 GIF 并将其拆分为帧,AnimationDrawable class 将满足您的需要。
以下是我的做法:
为 EditText
和 ProgressBar
创建自定义 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" >
<EditText
android:layout_width="match_parent"
android:id="@+id/edit"
android:layout_height="wrap_content"
android:drawableLeft="@drawable/ic_launcher"
android:singleLine="true" />
<ProgressBar
style="?android:attr/progressBarStyleLarge"
android:id="@+id/progress"
android:visibility="invisible"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignTop="@id/edit"
android:layout_alignBottom="@id/edit"
android:layout_alignRight="@id/edit"/>
</RelativeLayout>
然后,将其包含在 activity
<include
android:id="@+id/field1"
layout="@layout/progress_edittext"
android:layout_centerInParent="true"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
然后在 onCreate()
public class MainActivity extends ActionBarActivity {
private View field1;
private EditText edit;
private ProgressBar progress;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
field1 = findViewById(R.id.field1);
edit = (EditText) field1.findViewById(R.id.edit);
progress = (ProgressBar) field1.findViewById(R.id.progress);
edit.addTextChangedListener(new TextWatcher() {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
progress.setVisibility(View.VISIBLE);
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {}
@Override
public void afterTextChanged(Editable s) {
// YOUR LOGIC GOES HERE
}
});
}
}