实现正在加载中界面的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);


	}
原文地址:https://www.cnblogs.com/minghualiyan/p/5435528.html