Giter Site home page Giter Site logo

banketree / android-smartqueue Goto Github PK

View Code? Open in Web Editor NEW
5.0 4.0 0.0 228 KB

基于优先级队列写的一个SmartQueue(可控制多个线程的顺序执行、View的顺序显示),利用它可以轻松实现RecyclerView、ListView等Item的进入动画,网络请求线程的顺序执行

License: MIT License

Java 100.00%

android-smartqueue's Introduction

Android-SmartQueue

基于优先级队列写的一个SmartQueue(可控制多个线程的顺序执行、View的顺序显示)


#效果:

#Usage ##多个线程顺序执行 你可以创建一个ThreadPriorityQueue对象,然后通过.run()方法让线程开始执行,创建ThreadPriorityQueue对象的时候,你可以通过addThread()方法添加线程,其中第一个参数是Thread对象,第二个参数是你自己设置线程的优先级(值范围是1~10,优先级越高线程越先执行,当设置的值不在这个范围则默认为1):

ThreadPriorityQueue mThreadPriorityQueue = new ThreadPriorityQueue.QueueBuilder()
                        .addThread(thread1, 10).addThread(thread2, 9)
                        .addThread(thread3, 8).addThread(thread4, 7)
                        .addThread(thread5, 6).addThread(thread6, 5)
                        .create();
mThreadPriorityQueue.run();

当你想停止线程的执行,你可以调用:

if(mThreadPriorityQueue!=null){
      mThreadPriorityQueue.removeAll();//停止后续Thread任务
  }

##多个View的顺序显示 你可以添加任何的View,来控制它们的显示顺序,正如上面的效果一样,你可以控制Activity中布局的显示顺序,也可以控制列表项的显示,通过控制View的显示顺序你让界面不同的动画效果,如:

ViewPriorityQueue viewPriorityQueue = new ViewPriorityQueue.ViewBuilder(this,null).addView(views.get(3)).addView(views.get(5)).addView(views.get(4)).create();
        //View的执行顺序是按addView()的顺序,越前表示越先显示
viewPriorityQueue.run();

其中和第一种方式一样先创建一个ViewPriorityQueue对象,其中ViewBuilder()中有两个参数,第一个是当前的Activity对象,第二个是实现一个ViewAnim接口(为null表示View的显示是默认的效果,或者自己实现这个接口自定义View的显示动画效果),这个addView()方法表示添加View,越先添加的View越先显示,所以你想让某个View最先显示你可以把它第一个添加。 如下就是我自定义的一种动画效果:

ViewPriorityQueue viewPriorityQueue = new ViewPriorityQueue.ViewBuilder(new MainActivity(), new ViewAnim() {
                        @Override
                        public void beforeViewAnim(View view) {
                            DisplayMetrics metrics = getResources().getDisplayMetrics();
                            view.setAlpha(0);
                            view.animate().translationY(metrics.heightPixels).start();
                        }

                        @Override
                        public void runViewAnim(View view) {
                            view.animate().alpha(1).translationY(0).setDuration(500).start();
                        }
                    }).addView(views.get(0)).addView(views.get(7)).addView(views.get(1)).addView(views.get(6)).addView(views.get(2)).addView(views.get(3)).addView(views.get(5)).addView(views.get(4)).create();

                    viewPriorityQueue.run();

当然你也可以定义一个layout中的不同控件的显示顺序。

android-smartqueue's People

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.