转载请注明出处:王亟亟的大牛之路
最近不忙在翻Git的时候发现这个自定义吐司(Toast)的开源库,就写这篇博文我分享给大家,话不多说线上截图(貌似很多截屏录像的APP都掏ROOT,测试机懒得弄,有知道其他方法的小伙伴帮忙推荐哈)
一些自定义的吐司和Animation,在不适用Dialog想用吐司省立的时候还是一个不错的选择哦!
包目录
一个Demo包,一个Lib包,Lib包里的东西其实不多,可以把它抠出来放在自己的项目目录里,就可读性稍微更高点。
举例分析:
这是其中一个效果的Activity是,我们来分析一下在自己做的时候要做些什么?
//必须实现 UndoBarController.AdvancedUndoListener来处理吐司内部的点击事件
public class UndoStyle extends AppCompatActivity implements UndoBarController.AdvancedUndoListener, AdapterView.OnItemClickListener {
private ArrayAdapter<String> mAdapter;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ui_main);
getSupportActionBar().setHomeButtonEnabled(true);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
ListView listView = (ListView) findViewById(R.id.listView);
listView.setAdapter(mAdapter = new ArrayAdapter<>(this,
android.R.layout.simple_list_item_1, android.R.id.text1,
Arrays.asList(new String[]{"Item 1", "Item 2", "Item 3",
"Item 4", "Item 5", "Item 6", "Item 7", "Item 8",
"Item 9", "Item 10", "Item 11", "Item 12", "Item 13",
"Item 14", "Item 15",})
));
listView.setOnItemClickListener(this);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuItem item = menu.add(0, 0, 0, "Clear");
MenuItemCompat.setShowAsAction(item, MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == android.R.id.home)
finish();
else
new UndoBarController.UndoBar(this).clear();
return true;
}
@Override
protected void onPause() {
super.onPause();
}
//刚才提到的监听事件所实现的方法,分别是onUndo,onHide,onClear处理过程中的具体逻辑
@Override
public void onUndo(final Parcelable token) {
if (token != null) {
final int position = ((Bundle) token).getInt("index");
Toast.makeText(this, "undo clicked, index " + position,
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onHide(Parcelable token) {
if (token != null) {
final int position = ((Bundle) token).getInt("index");
Toast.makeText(this, "UndoBar hided! index " + position,
Toast.LENGTH_SHORT).show();
}
}
@Override
public void onClear(@Nullable Parcelable[] tokens) {
for (Parcelable token : tokens) {
final int position = ((Bundle) token).getInt("index");
Toast.makeText(this.getApplicationContext(), "UndoBar cleared! index " + position,
Toast.LENGTH_SHORT).show();
}
}
//在ListView的监听事件里分发Bundle对象给予上面的3个方法进行业务处理
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
final Bundle b = new Bundle();
b.putInt("index", position);
new UndoBarController.UndoBar(this).message(mAdapter.getItem(position)
+ " was selected").listener(this).token(b).show();
}
}
下载地址:http://yunpan.cn/ccyQUMpwUqUvL 访问密码 fadc
因为在Build过程中可能会有Gradle Build的蛋疼情况,如果遇到了相关问题,可以点击Gradle Build那些事,希望可以帮到你。
谢谢,有问题欢迎+Q 452270579 请注明来意与来源