创建一个动画文件,命名为:anim.xml,先放置一张图片到drawable文件夹下
文件位置在: res/drawable/anim.xml:
(动态文件)
<?xml version="1.0" encoding="utf-8"?> <animated-rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/loading"//图片id android:fromDegrees="0.0" android:pivotX="50.0%" android:pivotY="50.0%" android:toDegrees="360.0" />
放在ProgressBar中进行加载
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <ProgressBar android:id="@+id/loading" android:layout_width="30dp" android:layout_height="30dp" android:layout_gravity="center_horizontal" android:layout_marginTop="20dp" android:indeterminateBehavior="repeat" android:indeterminateDrawable="@drawable/anim" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="6dp" android:text="加载中..." /> </LinearLayout>
之所以能够让菊花能够动起来,主要是ProgressBar设置了以下两个属性:
android:indeterminateBehavior="repeat"//重复循环 android:indeterminateDrawable="@drawable/anim"
如何实现先加载一段时间之后延迟自定义布局的出现:
在Activity中找到ProgressBar、Button和自定义布局的视图,并在按钮点击事件中设置ProgressBar的可见性和延迟显示自定义布局:
public class MainActivity extends AppCompatActivity { private ProgressBar loadingProgressBar; private Button loadButton; private LinearLayout contentLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); loadingProgressBar = findViewById(R.id.loadingProgressBar); loadButton = findViewById(R.id.loadButton); contentLayout = findViewById(R.id.contentLayout); loadButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 显示加载菊花动画 loadingProgressBar.setVisibility(View.VISIBLE); // 延迟显示自定义布局 Handler handler = new Handler(); handler.postDelayed(new Runnable() { @Override public void run() { loadingProgressBar.setVisibility(View.GONE); contentLayout.setVisibility(View.VISIBLE); } }, 2000); // 2000毫秒延迟 } }); } }