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 将满足您的需要。

以下是我的做法:

EditTextProgressBar 创建自定义 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
            }
        });
    }
}