Apache Pivot教程 -- ActivityIndicator加载圈

    科技2024-04-05  104

    Apache Pivot教程 – ActivityIndicator加载

    浏览器左上角加载的图标总是令人着迷,怎么做出来的,Firefox内存不够中间加载很久的图标,总要被截屏下来 程序员,写了这么多年的程序,这点加载的简单效果你都实现不了? 尴尬地回答,是的(?) 今天,我们要把Firefox的加载做出来,让那些这么说的人佩服至极,你是怎么做到的? 学习啊! ActivityIndicator在上一章Background THread(Thread Safe异步)中已经提到过,不知道的人肯定是没有把文章看完,一上代码就走人,作者生气得很,要把这种人好好骂一顿,学习知识怎么能半途而废呢? 立刻进入今天的主题,ActivityIndicator

    package activity_indicator; import org.apache.pivot.wtk.*; import org.apache.pivot.wtk.ScrollPane.ScrollBarPolicy; import org.apache.pivot.collections.*; public class activity_indecator implements Application { private Window window=null; public static void main(String [] args) { try { DesktopApplicationContext.main(activity_indecator.class, args); } catch(Throwable err) { } } @Override public void startup(Display display, Map<String, String>properties) { window=new Window(); ScrollPane s=new ScrollPane(); s.setVerticalScrollBarPolicy(ScrollBarPolicy.AUTO); BoxPane panel=new BoxPane(); s.setView(panel); ActivityIndicator activityindicator=new ActivityIndicator(); //新建ActivityIndicator panel.add(activityindicator); window.setContent(s); window.setTitle("ActivityIndicators"); window.setMaximized(true); window.open(display); } @Override public boolean shutdown(boolean optional) { if(window!=null) { window.close(); } return false; } @Override public void suspend() { } @Override public void resume() { } }

    等等,怎么没有上一张那个加载的圈了?有的人可能会这么问 那肯定又是一个不认真看代码的 上一章中有一条代码activityindicator.setActive(true); 这一条代码至关重要,它让ActivityIndicator工作起来

    package activity_indicator; import org.apache.pivot.wtk.*; import org.apache.pivot.wtk.ScrollPane.ScrollBarPolicy; import org.apache.pivot.collections.*; public class activity_indecator implements Application { private Window window=null; public static void main(String [] args) { try { DesktopApplicationContext.main(activity_indecator.class, args); } catch(Throwable err) { } } @Override public void startup(Display display, Map<String, String>properties) { window=new Window(); ScrollPane s=new ScrollPane(); s.setVerticalScrollBarPolicy(ScrollBarPolicy.AUTO); BoxPane panel=new BoxPane(); s.setView(panel); ActivityIndicator activityindicator=new ActivityIndicator(); activityindicator.setActive(true); activityindicator.getActivityIndicatorListeners().add(new ActivityIndicatorListener() { @Override public void activeChanged(ActivityIndicator activityindicator) { System.out.println(activityindicator.isActive()); } }); panel.add(activityindicator); PushButton button=new PushButton(); button.setButtonData("setActive(true/false)"); button.getButtonPressListeners().add(new ButtonPressListener() { @Override public void buttonPressed(Button button) { if(activityindicator.isActive()) { activityindicator.setActive(false); } else { activityindicator.setActive(true); } } }); panel.add(button); window.setContent(s); window.setTitle("ActivityIndicators"); window.setMaximized(true); window.open(display); } @Override public boolean shutdown(boolean optional) { if(window!=null) { window.close(); } return false; } @Override public void suspend() { } @Override public void resume() { } }

    上面是完整代码,包括对ActivityIndicator的监听


    注意,又来文末提示了,不看完就吃亏 ActivityIndicator就算setActive(false)消失了,它的位置还预留着,不会被占掉

    Processed: 0.024, SQL: 9