Andorid实现Toast覆盖上一个文本

       音乐播放器中用户在选择播放模式时,传统的toast会一个显示完之后才会显示下一个,用户在连续的点击之后,滞后性十分严重,影响用户体验。

      所以必须及时的响应用户的点击事件,于是我们想到只用一个全局Toast对象,判断toast对象,如果存在就直接更改Toast的值就好了,下面是一个简易的选择播放模式的demo,用户每次点击图片时,会切换图片,并及时用Toast显示相应模式。

public class MainActivity extends Activity {

	private int[] playstyle = new int[] { R.drawable.random, R.drawable.shunxu,
			R.drawable.single, R.drawable.xunhuan };
	private String[] playtext = new String[] { "随机播放", "顺序播放", "单曲循环", "列表循环" };

	private ImageView mImageView;

	private int mStrat = 0;
	
	private Toast mToast;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		mImageView = (ImageView) findViewById(R.id.playstyle);
		mImageView.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				++mStrat;
				switch (mStrat % 4) {
				case 0:
					mImageView.setImageResource(playstyle[0]);
					ShowToast( playtext[0]);
					break;
				case 1:
					mImageView.setImageResource(playstyle[1]);
					ShowToast( playtext[1]);
					break;
				case 2:
					mImageView.setImageResource(playstyle[2]);
					ShowToast( playtext[2]);
					break;
				case 3:
					mImageView.setImageResource(playstyle[3]);
					ShowToast( playtext[3]);
					break;

				default:
					break;
				}
			}
		});
	}
	
	/**
	 * 将toast封装起来,连续点击时可以覆盖上一个
	 */
	public void ShowToast(String text){
		if (mToast == null) {
			mToast = Toast.makeText(MainActivity.this, text, Toast.LENGTH_SHORT);
			mToast.show();
		}else {
			mToast.setText(text);
			mToast.show();
		}
	}

}

实现效果如下,连续的点击下,依然能及时显示相应的文本

Andorid实现Toast覆盖上一个文本_第1张图片Andorid实现Toast覆盖上一个文本_第2张图片

你可能感兴趣的:(Android学习)