package com.github.shchurov.particleview.sample.spinner; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v7.app.AppCompatActivity; import android.util.TypedValue; import android.view.View; import android.widget.Button; import android.widget.TextView; import com.github.shchurov.particleview.ParticleView; import com.github.shchurov.particleview.sample.R; import com.github.shchurov.particleview.sample.SampleTextureAtlasFactory; public class SpinnerActivity extends AppCompatActivity { private static final int SPINNER_RADIUS_DP = 100; private ParticleView particleView; private Button btnStart; private TextView tvLoading; private SpinnerParticleSystem particleSystem; private boolean spinnerVisible; public static void start(Context context) { Intent i = new Intent(context, SpinnerActivity.class); context.startActivity(i); } @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_spinner); particleView = (ParticleView) findViewById(R.id.particleView); tvLoading = (TextView) findViewById(R.id.tvLoading); btnStart = (Button) findViewById(R.id.btnStart); int spinnerRadius = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, SPINNER_RADIUS_DP, getResources().getDisplayMetrics()); particleSystem = new SpinnerParticleSystem(spinnerRadius); particleView.setTextureAtlasFactory(new SampleTextureAtlasFactory(getResources())); particleView.setParticleSystem(particleSystem); btnStart.setOnClickListener(onClickListener); } private View.OnClickListener onClickListener = new View.OnClickListener() { @Override public void onClick(View view) { showLoading(); view.postDelayed(new Runnable() { @Override public void run() { hideLoading(); } }, 4500); } }; private void showLoading() { spinnerVisible = true; particleSystem.show(particleView.getWidth() / 2, particleView.getHeight() / 2); btnStart.setVisibility(View.INVISIBLE); tvLoading.setVisibility(View.VISIBLE); particleView.startRendering(); } private void hideLoading() { btnStart.setVisibility(View.VISIBLE); tvLoading.setVisibility(View.INVISIBLE); particleSystem.setOnDismissEndListener(new SpinnerParticleSystem.OnDismissEndListener() { @Override public void onDismissEnd() { runOnUiThread(new Runnable() { @Override public void run() { spinnerVisible = false; particleView.stopRendering(); } }); } }); particleSystem.dismiss(); } @Override protected void onResume() { super.onResume(); if (spinnerVisible) { particleView.startRendering(); } } @Override protected void onPause() { super.onPause(); particleView.stopRendering(); } }