• 实现正在加载中界面的Android库:DynamicBox


    转载。

    DynamicBox是一个Android库,能够inflates自定义布局来指示出: 

    • 正在加载内容
    • 显示一个异常
    • 或者是一个自定义视图
     
     
    文件名:dynamicbox-master
    简单说明:
    支持(可以替换加载中的控件~):
    • ListView
    • GridView
    • ExpandableListView
    • Activity
    • FragmentActivity
    • Fragment
    • LinearLayout
    • RelativeLayout
    • ScrollView

    示例 (控件和布局的布局文件或ID赋值方式)

    • View
    ListView lv = (ListView)findViewById(R.id.listView); DynamicBox box = new DynamicBox(this,lv);
    • Layout id
    DynamicBox box = new DynamicBox(this,R.layout.activity_activity);
     

    To Show the loading View

    box.showLoadingLayout(); //显示加载视图

    To Show Internet off View

    box.showInternetOffLayout(); 

    To Show Exception View

    box.showExceptionLayout();//显示如果没有加载到时的界面

    To Show a Custom View

    View customView = getLayoutInflater().inflate(R.layout.custom_view, null, false); 
    box.addCustomView(customView,"greenmonster"); box.showCustomView("greenmonster");

    **To set Loading Message **

    box.setLoadingMessage("Loading your music ...");
     
     
     
     
    自己使用的方法:
     
    因为是自己新建的项目来复制黏贴的,然后引用包到自己项目的时候报错了
     
    因为android-support-v4自己项目和引用的项目都有,所以重复了,这样以后自己新建拷贝的项目用来引用应该会常出现这个问题~
    删除掉新建的包项目,重新引用,就没报错了~
     
     
     
    整个界面的初始化和等待:
    Activity初始化的时候就可以设置对应的值

    DynamicBox box ;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    pojo = new HouseConditionsPojo();
    
    box = new DynamicBox(this,R.layout.house_jj_list_activity);
    
    box.setLoadingMessage("Loading content...");
    box.setOtherExceptionTitle("Error");
    box.setOtherExceptionMessage("An error has occurred while fetching data, please try again ...");
    box.setClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
    ini(); // 访问网络,成功的时候初始化控件
    }
    });
    ini();
    }


     
     
    然后是在访问网络返回成功失败时的对应操作
     
    private void ini() {
    box.showLoadingLayout(); //显示加载中的画面
    
    AsyncHttpClientTool.SearchJJHouses(pojo, new AsyncReturn() {
    @Override
    public void onSuccess(String arg0) {
    box.hideAll();   // 关闭加载中动画
    
    try {
    
     init(); //注册控件     控件赋值的呢过
    
    } catch (Exception e) {
    e.printStackTrace();
    }
    super.onSuccess(arg0);
    }
    
    
    @Override
    public void onFailure(Throwable arg0) {
    box.showExceptionLayout();  //调用访问失败的界面
    super.onFailure(arg0);
    }
    
    
    });
    }


     
    对应控件的等待载入:
     
     
    public void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_listview); //加载布局文件
    
    		ListView lv = (ListView)findViewById(R.id.listView); //布局中用来替换的控件
    		// Setup by Box
    		box = new DynamicBox(this,lv); // or new DynamicBox(this,R.id.listView)
    		box.setLoadingMessage("Loading your music ...");
    		
    		//自定义控件用来替换布局中的替换控件
    		View emptyCollectionView = getLayoutInflater().inflate(R.layout.activity_listview, null, false);
    		
    		box.addCustomView(emptyCollectionView,"music_not_found");
    		box.setClickListener(new View.OnClickListener() {
    			@Override
    			public void onClick(View view) {
    				Toast.makeText(getApplicationContext(), "Retry button clicked :)", Toast.LENGTH_SHORT).show();
    			} 
    		});
    
    		box.showLoadingLayout();
    		
    		
    		
    		
    		new Handler().postDelayed(new Runnable() {
    			public void run() {
    				// box.showCustomView("music_not_found");  //当数据获取成功时,展示正确的界面 
    				box.showExceptionLayout();//当数据获取失败时,显示加载失败的界面
    			}
    		}, 2000);
    
    
    	}
  • 相关阅读:
    去除图片水印
    CALayer
    UIKit Animation
    CoreAnimation
    3DTouch
    键盘事件
    weChat聊天发送图片带有小尖角的实现
    webView 和 js 交互 之 屏蔽 样式
    iOS socket编程
    tableView尾部多处一部分空白高度
  • 原文地址:https://www.cnblogs.com/minghualiyan/p/5435528.html
Copyright © 2020-2023  润新知