PlantUML 使用

原创 2016年06月02日 10:02:45


用了一款android studio的 画图插件,觉得还行,推荐给大家下。        

安装方式:
首先安装好 Graphviz,然后安装 android studio 插件即可

详细使用网址:
http://plantuml.com/classes.html (官网)
http://archive.3zso.com/archives/plantuml-quickstart.html (快速指南) 

上效果图:


     

画图的代码如下:
@startuml


interface LScreen
interface LScreenContainer
abstract class LScreenImpl
class LScreenManager
abstract class UIModule


interface LScreen{
    View getScreenView();
    void setOnTouchListener(OnTouchListener var1);
    void onShowScreen();
    void onBackPressed();
    void onCreate(Bundle var1, Intent var2);
    void onStart();
    void onHideScreen();
    void onScroll(float var1);
    void onResume();
    void onPause();
    void onStop();
    void onDestroy();
    void onSaveInstanceState(Bundle var1);
    void onRestoreInstanceState(Bundle var1);
    void onActivityResult(int var1, int var2, Intent var3);
    void onRequestPermissionsResult(int var1, String[] var2, int[] var3);
}

interface LScreenContainer{
    Context getContext();
    void registCallBack(LifeCycleCallBack callBack);
    void unregistCallBack(LifeCycleCallBack callBack);
    void runNUITask(Runnable run);
    void runUiTask(Runnable run);
    void doRefreshAll();
}


abstract class LScreenImpl{
    private final ArrayList<LifeCycleCallBack> mActivityLifecycleCallbacks = new ArrayList<LifeCycleCallBack>();
    private Context context;
    private Handler handler;
    private Handler nuiHandler;
    private HandlerThread handleThread;
    public LScreenImpl(Context context);
    public Context getContext();
    public void registCallBack(LifeCycleCallBack callBack);
    public void unregistCallBack(LifeCycleCallBack callBack);
    protected abstract List<UIModule<View>> generateModules();
    public final void runNUITask(Runnable run);
    public final void runUiTask(Runnable run);
    public void onCreate(Bundle b, Intent startIntent);
    public void onStart() ;
    public void onResume();
    public void onPause();
    public void onStop() ;
    public void onDestroy() ;
    public void onSaveInstanceState(Bundle bundle);
    public void onRestoreInstanceState(Bundle bundle) ;
    public void onActivityResult(int requestCode, int resultCode, Intent data) ;
    public void onShowScreen();
}


class LScreenManager{
 private List<UIModule<View>> mModules;
 public static LScreenManager getInstance();
 public LScreenManager(Context context);
 public Activity getActivity();
 private void initOneTouchStream();
 public View getScreenView();
 public void onShowScreen();
 public void showScreenAll();
 public void doRefreshAll();
 protected List<UIModule<View>> generateModules()
}


abstract class UIModule<UI>{
   private LScreenContainer mContainer;
   private LifeCycleCallBack mLifecycleCallback;
   protected UIModuleBridge moduleBridge;
    public UIModule(LScreenContainer container);
    public void init();
    public Context getContext();
    public LScreenContainer getContainer();
    protected void runUITask(Runnable run);
    protected void runNUITask(Runnable run);
    public void startActivityForResult(Intent intent, int requestCode);
    public void onCreate(Bundle bundle);
    public void onSaveInstance(Bundle bundle);
    public void onRestoreInstance(Bundle bundle);
    public void onStart();
    public void onPause();
    public void onResume();
    public void onStop();
    public void onDestroy();
    public void onActivityResult(int requestCode, int resultCode, Intent data);
    public void onRefresh()
    public void onShowScreen()
    public abstract UI getUI();
    private void initCallback(LScreenContainer container) ;
    protected void setRefreshComplete(boolean succeed)
    protected void setRefreshComplete(boolean succeed, String errorMsg);
    public void onHideScreen()
    protected void setLoadMoreComplete(boolean hasMore);
    protected void setLoadMoreComplete(boolean hasMore, boolean success, String errorMsg);
    public static interface UIModuleBridge
    protected void reportRefreshResult(boolean success);
}


abstract class AbstractScreenView{
   public AbstractScreenView(LScreenContainer container)
   public boolean isNeedRefresh()
   public void init() //@Override
   public View getUI()
   protected abstract View getContentView()
   protected abstract void initViews(View contentView);
}

abstract class AScreenView{
   ABaseView mBaseView;
   public AScreenView(LScreenContainer container)
   protected View getContentView()
   protected void initViews(View contentView)
   public void onRefresh()
   public void onDestroy()
   protected boolean onBaseViewCacheRefresh()
   abstract protected ABaseView configBaseView(Context context, AbstractScreenView screenView);
   public ABaseView getBaseView()
}

class ABaseView{
   private View mContentView;// 根视图
   View loadingLayout;// 加载中视图
    View loadFailureLayout;// 加载失败视图
    View contentLayout;// 内容视图
    View emptyLayout;// 空视图
    private TaskManager taskManager;// 管理线程
    public ABaseView(Context context)
    public void onRunning();
    public void onDestroy();
    abstract protected int inflateContentView();
    protected void launchFullScreen()
}

interface OnScreenViewCacheRefresh{
   public boolean outofdate(long interval);
    public void refreshCache();// 刷新缓存
}

interface OnScreenPopCallback {
        void onScreenExpand(); // 列表界面展开了
        void onScreenClosed(long duration); //列表界面关掉了
        void onScreenExandPrepare();//开始展开
        void onScreenClosePrepare(); // 开始关闭
}


enum RefreshMode {
        /**
         * 清空原有所有数据,然后重新拉取pagesize 重设数据
         */
        reset,
        /**
         * 上拉加载更多
         */
        update,
        /**
         *  下拉刷新
         */
        refresh
    }



interface IPaging<T extends Serializable, Ts extends Serializable>{

    public IPaging<T, Ts> newInstance(); //重设参数
    /**
     * 处理数据
     *
     * @param newDatas  新获取的数据集合
     * @param firstData adapter数据集中的第一条数据
     * @param lastData  adapter数据集中的最后一条数据
     */
    public void processData(Ts newDatas, T firstData, T lastData);

    public String getPreviousPage();

    public String getNextPage();
}

abstract class APagingView<T extends Serializable, Ts extends Serializable, V extends View> {
    private ABaseAdapter<T> mAdapter;
    protected RefreshConfig refreshConfig;
    IPaging mPaging;
    void _layoutInit(Context context, View contentView)
    abstract public void requestData(RefreshMode mode);
    abstract protected ABaseAdapter.AbstractItemView<T> newItemView();
    protected void configRefresh(RefreshConfig config)
    public void onPullDownToRefresh();
    public void onPullUpToRefresh();
    abstract public void onRefreshViewComplete(RefreshMode mode);
    abstract public AbsListView getRefreshView();
    protected void taskStateChanged(ABaseTaskState state, TaskException exception, RefreshMode mode)
}

abstract class AListView<T extends Serializable, Ts extends Serializable>{
   ListView mListView;
   private View btnToTop;
   protected View mFooterView;
    private ObjectAnimator mRefreshAnim;
    protected int inflateContentView(){} //Override
    void _layoutInit(Context context, View contentView)//Override
    final protected void setInitRefreshView(AbsListView refreshView)
    public void onScrollStateChanged(AbsListView view, int scrollState)  //Override 接口
    public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) //接口
    public synchronized void onViewClicked(View view)
}


abstract class ASwipeListView<T extends Serializable, Ts extends Serializable> {
   private SwipeRefreshLayout mSwipeRefreshLayout;
   public void onRefresh()
   public void onRefreshViewComplete(RefreshMode mode) //Override
   final protected void setInitRefresh(ListView listView)//Override
   void _layoutInit(Context context, View contentView)
}



class NewsView{
   protected ABaseView configBaseView(Context context, AbstractScreenView screenView)
}


class NewsListView{
   protected int inflateContentView();
}

class NewsBaseView{
   protected int inflateContentView()
   public void requestData()
   public void requestData(ABizLogic.CacheMode mode)
   protected void launchFullScreen()
}


LScreen <|--right LScreenContainer
LScreenContainer <|--right LScreenImpl
LScreenImpl <|-- LScreenManager
LScreenManager o-right- UIModule

legend top
  <b>LScreenManager</b> and <b>UIModule</b>
  是聚合关系
endlegend


UIModule <|-- AbstractScreenView

AbstractScreenView <|-- AScreenView
AScreenView *-right- ABaseView



ABaseView ..up|> OnScreenViewCacheRefresh
ABaseView ..up|> OnScreenPopCallback

ABaseView <|--APagingView
APagingView <|--AListView

APagingView *-left- RefreshMode
APagingView *-left- IPaging

AListView <|--ASwipeListView

AScreenView <|--left NewsView
ASwipeListView <|--right NewsListView
ABaseView <|--right  NewsBaseView

@enduml


        
       

如何在添加新的系统菜单项CMenu

BOOL CEllispseDialogDlg::OnInitDialog() { CDialog::OnInitDialog(); // 将“关于...”菜单项添加到系统菜单中。 // IDM...

C++ 文件查找 _findfirst、_findnext和_fineclose的使用

C++ 文件查找在C++中我们要如何查找文件呢?我们需要一个结构体和几个大家可能不太熟悉的函数。这些函数和结构体在的头文件中,结构体为struct _finddata_t ,函数为_findfirst...
  • damant
  • damant
  • 2016年03月09日 11:15
  • 1232

使用VS CODE+PlantUML高效画图

使用VS CODE+PlantUML高效画图 自从发现了plantuml写脚本画图的方式之后,爱上了画图~ 环境:MAC 前言本文多数内容引用自官网文档和其他人的教程,并非本人原创,也谈...

使用 Sublime + PlantUML 高效地画图

http://www.jianshu.com/p/e92a52770832 http://plantuml.com/download.html http://www.sublimetext.com/...

Eclipse下PlantUML 的安装及配置、Graphviz的安装和配置以及使用问题解决办法

注意:PlantUML一定要用到Graphviz。PlantUML使用Graphviz来生成相关图形(只有序列图可以不依赖它),其它图形都需要,因此得安装它,否则生成图形失败,且报错。 1.下载更新 ...

PlantUML: 使用简单的文字描述画UML图,入门

PlantUML: 使用简单的文字描述画UML图,入门概述PlantUML支持的UML图类别还挺多的:时序图,用例图,类图,活动图,组件图,状态图,对象图等。文字描述UML图的好处或特点: 轻量级,文...
  • FJEagle
  • FJEagle
  • 2017年12月10日 16:50
  • 9

使用PlantUML快速绘图

PlantUML是一个快速创建UML图形的组件,官网上之所以称它是一个组件,我 想主要是因为多数情况下我们都是在Eclipse、NetBenas、Intellijidea、 Emacs、 Sublim...
  • zxc123e
  • zxc123e
  • 2017年05月13日 16:29
  • 2485

mac版本idea使用(二)-如何安装PlantUML画时序图、类图

mac使用PlantUML建立类图等
  • ljxbbss
  • ljxbbss
  • 2017年07月25日 11:16
  • 708

mac使用Sublime + PlantUML高效地画图

mac使用 Sublime + PlantUML 高效地画图 前言 看到这个帖子感觉这个画图方式特别好,但是这个帖子是在Windows下配置的,就在mac上试一下,区别还是蛮大的 记录下来希望可以...

GitLab 之 PlantUML 的配置及使用

UML 统一建模语言是一个通用的可视化建模语言,用于对软件进行描述、可视化处理、构造和建立软件系统制品的文档。PlantUML 是一个开源项目,支持快速绘制时序图、流程图、活动图、状态图、用例图、类图...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PlantUML 使用
举报原因:
原因补充:

(最多只允许输入30个字)