微信API实例(OKHttp+PullToRefreshListView+WebView综合应用)
来源:互联网 发布:皇室战争mac模拟器 编辑:程序博客网 时间:2024/05/21 08:49
- 主页面xml
- 详情页面xml
- 自定义标题栏布局xml
- MainAcvitityJava
- 详情页面NewsAcvitityJava
主页面xml:
<include layout="@layout/title_wechat"></include> <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pu_lv" android:layout_width="match_parent" app:ptrMode="both" android:layout_height="match_parent"> </com.handmark.pulltorefresh.library.PullToRefreshListView> **需要添加pulltorefresh依赖库**
详情页面xml:
<WebView android:id="@+id/wv" android:layout_width="match_parent" android:layout_height="match_parent"></WebView>
自定义标题栏布局xml:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:background="#eb413d" android:layout_height="50dp"> <TextView android:layout_width="wrap_content" android:layout_height="match_parent" android:text="WeChat新闻推送" android:textColor="#fce6e6" android:textSize="25sp" android:layout_gravity="center" android:gravity="center_vertical"/></LinearLayout>
MainAcvitity。Java
public class MainActivity extends AppCompatActivity { private PullToRefreshListView pu_lv; private List<WeChatNews> list; public static final int PAGE=1; public static final int LOADING=2; private MyHandle handle=null; public int page =1; private WechatAdapter adapter=null; private String url="http://api.tianapi.com/qiwen/?key=4bd737c35d23201f3f97b7eeb4f043d3&num=10&page="; private String json=null; private String url1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); pu_lv= (PullToRefreshListView) findViewById(R.id.pu_lv); url1 = url + String.valueOf(page); pu_lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() { @Override public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) { page=1; getData(); } @Override public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) { page+=1; url1 = url + String.valueOf(page); getData(); } }); list=new ArrayList<>(); handle=new MyHandle(); getData(); adapter=new WechatAdapter(this,list); adapter.notifyDataSetChanged(); pu_lv.setAdapter(adapter); pu_lv.onRefreshComplete(); pu_lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { WeChatNews news=list.get(position-1); String url=news.getUrl(); Intent intent=new Intent(view.getContext(),NewsActivity.class); intent.putExtra("content",url); startActivity(intent); } }); } /** * 获取数据 */ private void getData(){ OkHttpClient client=new OkHttpClient(); Request request=new Request.Builder().url(url1).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { final String str= response.body().string(); json=str; runOnUiThread(new Runnable() { @Override public void run() { if(page==1){ handle.sendMessage(handle.obtainMessage(PAGE,json)); }else { handle.sendMessage(handle.obtainMessage(page,json)); } Thread.interrupted();//中断线程,防止下拉不更新,上拉内容重复 } }); } }); } /** * 解析json数据,构建展示的数据源 */ private List<WeChatNews> parseJosn(String json){ List<WeChatNews> list1=new ArrayList<>(); if(TextUtils.isEmpty(json)){ return list1; } try { JSONObject object=new JSONObject(json); JSONArray array=object.getJSONArray("newslist"); int code=object.getInt("code"); if(code==200){ for (int i = 0;array!=null &&i < array.length(); i++) { JSONObject obj=array.getJSONObject(i); WeChatNews news=new WeChatNews(); news.setTitle(obj.getString("title")); news.setDescription(obj.getString("description")); news.setCtime(obj.getString("ctime")); news.setPicUrl(obj.getString("picUrl")); news.setUrl(obj.getString("url")); list1.add(news); } } } catch (JSONException e) { e.printStackTrace(); } return list1; } class MyHandle extends Handler{ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case PAGE: list=parseJosn(msg.obj.toString()); adapter.setList(list); adapter.notifyDataSetChanged(); break; case LOADING: list.addAll(parseJosn(msg.obj.toString())); adapter.notifyDataSetChanged(); break; default: list.addAll(parseJosn(msg.obj.toString())); adapter.notifyDataSetChanged(); break; } pu_lv.onRefreshComplete(); } }
详情页面NewsAcvitity。Java
public class NewsActivity extends AppCompatActivity { private WebView wv; private String url_content; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news); wv= (WebView) findViewById(R.id.wv); wv.setWebViewClient(new MyClient()); Intent intent=getIntent(); url_content=intent.getStringExtra("content"); wv.loadUrl(url_content); wv.getSettings().setBuiltInZoomControls(true); wv.getSettings().setDisplayZoomControls(false);//隐藏缩放按钮// wv.getSettings().setJavaScriptEnabled(true);// wv.getSettings().setSupportZoom(true); //自适应屏幕// 设置webview推荐使用的窗口,设置为true。第二个方法是设置webview加载的页面的模式,也设置为true。// 这方法可以让你的页面适应手机屏幕的分辨率,完整的显示在屏幕上,可以放大缩小。/ wv.getSettings().setUseWideViewPort(true); wv.getSettings().setLoadWithOverviewMode(true); //设置缓存模式 wv.getSettings().setAppCacheEnabled(true); wv.getSettings().setDatabaseEnabled(true); wv.getSettings().setDomStorageEnabled(true); wv.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT); } class MyClient extends WebViewClient{ @Override public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { if(Build.VERSION.SDK_INT>Build.VERSION_CODES.LOLLIPOP){ //当Sdk版本大于21时才能使用此方法 view.loadUrl(request.getUrl().toString()); } return super.shouldOverrideUrlLoading(view, request); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url_content); return super.shouldOverrideUrlLoading(view, url); } }
0 0
- 微信API实例(OKHttp+PullToRefreshListView+WebView综合应用)
- jquery综合应用实例
- PDO综合实例应用
- PullToRefreshListView综合讲解
- 微信WeixinJSBridge API使用实例
- 微信综合练习
- 一维小波降噪的综合应用实例
- 微信应用号开发实例
- HttpClient(4.5) 使用实例(微信API,网页授权Oauth2.0)
- HttpClient(4.5) 使用实例(微信API,网页授权Oauth2.0)
- 使用okHttp拉取数据(PullToRefreshListView刷新)
- PullToRefreshListView 应用讲解
- PullToRefreshListView 应用讲解
- PullToRefreshListView 应用讲解
- PullToRefreshListView 应用讲解
- PullToRefreshListView 应用讲解
- PullToRefreshListView 应用讲解
- PullToRefreshListView 应用讲解
- IDAPython类库---idautils.py的源码
- Eclipse显示目录层级结构
- 代码自动生成工具版本更新,新增支持Arduino uno R3
- APIJSON-以坚持和偏执,回敬傲慢和偏见
- Linux+Nginx+Asp.net Core及守护进程部署
- 微信API实例(OKHttp+PullToRefreshListView+WebView综合应用)
- Ant Colony Optimization
- struts2(二) 表单参数自动封装和参数类型自动转换
- Android ToolBar的使用
- 我看百度的问题
- C#---反射ConstructorInfo
- Spring MVC入门2——一个简单例子
- Opencv2.4.13 与Visual Studio2013 环境搭建配置
- 【转】如何管理好新接手的团队