您的位置:首页 > 移动开发 > Android开发

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

2016-04-26 16:15 393 查看
转载。

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

正在加载内容

显示一个异常

或者是一个自定义视图

项目主页:http://www.open-open.com/lib/view/home/1408690490303
文件名: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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: