开源库Undobar简单使用解析

转载请注明出处:王亟亟的大牛之路
最近不忙在翻Git的时候发现这个自定义吐司(Toast)的开源库,就写这篇博文我分享给大家,话不多说线上截图(貌似很多截屏录像的APP都掏ROOT,测试机懒得弄,有知道其他方法的小伙伴帮忙推荐哈)
开源库Undobar简单使用解析
开源库Undobar简单使用解析
开源库Undobar简单使用解析
开源库Undobar简单使用解析

一些自定义的吐司和Animation,在不适用Dialog想用吐司省立的时候还是一个不错的选择哦!

包目录
开源库Undobar简单使用解析
一个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 请注明来意与来源

上一篇:更新SDK


下一篇:开源库DownloadProgressBar分析