DataLoadingLayoutAndroid
来源:互联网 发布:微商的发展前景数据 编辑:程序博客网 时间:2024/05/22 03:29
项目地址:lvleo/DataLoadingLayoutAndroid
简介:A custom view for data loading status on Android
Description
DataLoadingLayout is a simple library for Android. It's a layout to show current data loading status(loading, load success,load error)
Screenshots
Usage
Step 1:Add the dependency:
open the build.gradle file of your module, at the dependencies function add the below code:
compile 'com.lvleo:data-loading-layout:0.1.1'
Step 2:Add the view to your layout.xml file:
<com.lvleo.dataloadinglayout.DataLoadingLayout android:id="@+id/loading_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@id/layout_buttons" android:background="@android:color/darker_gray" app:loadingBarColor="@android:color/holo_purple" app:statusText="暂无数据" app:statusTextColor="@android:color/black" app:statusTextSize="16sp" />
Step 3: The activity implements DataLoadingLayout.OnViewTouchListener, after init the view setDataView(view) and setOnMyViewTouchListener(this),final Override the onTouchUp() function. like this:
public class MainActivity extends AppCompatActivity implements DataLoadingLayout.OnViewTouchListener { private static final String TAG = MainActivity.class.getSimpleName(); private Button btnNoData, btnDataLoadingSuccess, btnDataLoadingError; private TextView txtResult; private DataLoadingLayout mLoadingLayout; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btnNoData = (Button) findViewById(R.id.btn_data_empty); btnDataLoadingSuccess = (Button) findViewById(R.id.btn_data_success); btnDataLoadingError = (Button) findViewById(R.id.btn_data_error); txtResult = (TextView) findViewById(R.id.txt_result); mLoadingLayout = (DataLoadingLayout) findViewById(R.id.loading_layout); mLoadingLayout.setDataView(txtResult); mLoadingLayout.setOnMyViewTouchListener(this); btnNoData.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getData("http://api.map.baidu.com/telematics/v3/weather?location="); } }); btnDataLoadingSuccess.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getData("http://api.map.baidu.com/telematics/v3/weather?location=无锡"); } }); btnDataLoadingError.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { getData("http://api.map.baidu.com/telematics/v3/weathersssss?location=无锡"); } }); mLoadingLayout.loadSuccess("Demo 演示"); } @Override public void onTouchUp() { // if data load Error, can get data again by touch the view getData("http://api.map.baidu.com/telematics/v3/weather?location=无锡"); } private void getData(String subUrl) { mLoadingLayout.loading(); String url = subUrl + "&output=json&ak=6gYxFLrG9vipiq1bkQLnHhUH&" + "mcode=4C:45:2B:FC:13:89:0F:76:88:A8:D3:9F:69:F6:51:9C:BC:F6:9E:65;baidumapsdk.demo"; AsyncHttpClient client = new AsyncHttpClient(); client.setTimeout(20 * 1000); client.setConnectTimeout(20 * 1000); client.setResponseTimeout(20 * 1000); client.setMaxRetriesAndTimeout(3, 20 * 1000); client.allowRetryExceptionClass(SocketTimeoutException.class); client.allowRetryExceptionClass(ConnectTimeoutException.class); client.get(url, new JsonHttpResponseHandler() { @Override public void onSuccess(int statusCode, Header[] headers, JSONObject response) { super.onSuccess(statusCode, headers, response); Log.i(TAG, "onSuccess: response==" + response); if (response.optInt("error") == 0) { mLoadingLayout.loadSuccess(); JSONObject object = response.optJSONArray("results").optJSONObject(0). optJSONArray("weather_data").optJSONObject(0); String weather = "今日天气\r\n" + object.optString("date") + "\r\n 温度:" + object.optString("temperature") + "\r\n 风向:" + object.optString("wind"); txtResult.setText(weather); } else { mLoadingLayout.loadSuccess("暂无数据,\n 点击屏幕 重新加载 "); } } @Override public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) { super.onFailure(statusCode, headers, responseString, throwable); mLoadingLayout.loadError("服务器连接失败,\n 点击屏幕 重新加载"); } }); }}
XML attributes
0 0
- DataLoadingLayoutAndroid
- 正则表达式*和+的区别
- Jenkins 处理过后的文件 TortoiseSVN 无法提交。问题已经解决啦!
- [osg]源码分析:OSG中的智能指针osg::ref_ptr
- 致创业者:APP已死 服务永生
- hdoj 1421
- DataLoadingLayoutAndroid
- 目录树结构的数据库设计思考
- servlet的后台页面跳转和ajax的页面跳转
- 工作web记录2016-11
- POJ 2586 - 贪心 or DP
- 在开发板上生成一个带logo的二维码 -(三)
- Winfrom 使用WCF 实现双工通讯
- 【容器化思维】容器化技术和容器管理平台
- RxJava + Retrofit+okhttp 封装,包含对相同格式请求数据、相同格式返回数据处理,显示 Material Design 加载 dialog,文件上传下载进度展示、全局异常捕捉。