@Override public View initView() { View view = View.inflate(mActivity, R.layout.tab_detail_pager, null); newTopView = View.inflate(mActivity, R.layout.new_top_ads, null); ViewUtils.inject(this, view); ViewUtils.inject(this, newTopView); //将头条新闻以头布局的形式加给listview lvTabList.addHeaderView(newTopView); //设置下拉刷新监听 lvTabList.setOnRefreshListener(new RefreshListView.OnRefreshListener() { @Override public void onReFresh() { getDataFromServer(); } @Override public void onLoadMore() { if(mMoreUrl != null){ getMoreDataFromServer(); }else{ Toast.makeText(mActivity,"最后一页了",Toast.LENGTH_LONG).show(); lvTabList.onRefreshComplete(false);//收起加载更多的布局 } } }); lvTabList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println("被点击:"+position); //跳转新闻详情页 Intent intent = new Intent(); intent.setClass(mActivity, NewsDetailActivity.class); intent.putExtra("url",tabNewsDatas.get(position).url); mActivity.startActivity(intent); } }); return view; }RefreshListView.java
OnItemClickListener mItemClickListener; //对这个ListView中item的点击事件进行包装,那样的话拿到的第一个item的position就是0,否则是2(因为ListView中前面添加了两个头) @Override public void setOnItemClickListener(OnItemClickListener listener) { super.setOnItemClickListener(this);//这里传我们包装的OnItemClickListener mItemClickListener = listener; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { if(mItemClickListener!=null){ mItemClickListener.onItemClick(parent, view, position - getHeaderViewsCount(), id); } }
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/title_red_bg"> <ImageButton android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:background="@null" android:src="@drawable/back" /> <ImageButton android:id="@+id/btn_share" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="5dp" android:background="@null" android:src="@drawable/icon_share" /> <ImageButton android:id="@+id/btn_size" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="5dp" android:layout_toLeftOf="@id/btn_share" android:background="@null" android:src="@drawable/icon_textsize" /> </RelativeLayout> <WebView android:id="@+id/wv_web" android:layout_width="match_parent" android:layout_height="match_parent" /> </LinearLayout>效果图:
package com.xbmu.wisdombj; import android.app.Activity; import android.os.Bundle; import android.webkit.WebSettings; import android.webkit.WebView; public class NewsDetailActivity extends Activity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_detail); mWebView = (WebView) findViewById(R.id.wv_web); String url = getIntent().getStringExtra("url"); WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true);//表示支持js settings.setBuiltInZoomControls(true);//显示放大缩小按钮 settings.setUseWideViewPort(true);//支持双击缩放 mWebView.loadUrl(url);//加载网页 } }运行效果:
lvTabList.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { System.out.println("被点击:" + position); // 35311,34221,34234,34342 //在本地记录已读状态 String ids = SharePreferenceUtils.getString(mActivity,"read_ids",""); String readId = tabNewsDatas.get(position).id; if(!ids.contains(readId)){ ids = ids + readId + ","; SharePreferenceUtils.putString(mActivity,"read_ids",ids); } newsItemAdapter.notifyDataSetChanged(); //跳转新闻详情页 Intent intent = new Intent(); intent.setClass(mActivity, NewsDetailActivity.class); intent.putExtra("url", tabNewsDatas.get(position).url); mActivity.startActivity(intent); } });
@Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder viewHolder; if (convertView == null) { convertView = View.inflate(mActivity, R.layout.new_list_item, null); viewHolder = new ViewHolder(); viewHolder.ivNewIcon = (ImageView) convertView.findViewById(R.id.iv_pic); viewHolder.tvNewTitle = (TextView) convertView.findViewById(R.id.tv_title); viewHolder.tvNewDate = (TextView) convertView.findViewById(R.id.tv_date); convertView.setTag(viewHolder); } else { viewHolder = (ViewHolder) convertView.getTag(); } viewHolder.tvNewTitle.setText(getItem(position).title); viewHolder.tvNewDate.setText(getItem(position).pubdate); bitmapUtils.display(viewHolder.ivNewIcon, getItem(position).listimage); String ids = SharePreferenceUtils.getString(mActivity,"read_ids",""); if(ids.contains(getItem(position).id)){ viewHolder.tvNewTitle.setTextColor(Color.GRAY); }else{ viewHolder.tvNewTitle.setTextColor(Color.BLACK); } return convertView; }SharePreferenceUtils.java
package com.xbmu.wisdombj.utils; import android.content.Context; import android.content.SharedPreferences; /** * 专门访问和设置SharePreference的工具类,保存和配置一些设置信息 * Created by Administrator on 2016/2/4 0004. */ public class SharePreferenceUtils { private static final String SHARE_PREFS_NAME = "config"; private static SharedPreferences mSharedPreferences; public static void putBoolean(Context ctx,String key,boolean value){ if(mSharedPreferences == null){ mSharedPreferences = ctx.getSharedPreferences(SHARE_PREFS_NAME,Context.MODE_PRIVATE); } mSharedPreferences.edit().putBoolean(key,value).commit(); } public static Boolean getBoolean(Context ctx,String key,boolean defaultValue){ if(mSharedPreferences == null){ mSharedPreferences = ctx.getSharedPreferences(SHARE_PREFS_NAME,Context.MODE_PRIVATE); } return mSharedPreferences.getBoolean(key,defaultValue); } public static void putString(Context ctx,String key,String value){ if(mSharedPreferences == null){ mSharedPreferences = ctx.getSharedPreferences(SHARE_PREFS_NAME,Context.MODE_PRIVATE); } mSharedPreferences.edit().putString(key, value).commit(); } public static String getString(Context ctx,String key,String defaultValue){ if(mSharedPreferences == null){ mSharedPreferences = ctx.getSharedPreferences(SHARE_PREFS_NAME,Context.MODE_PRIVATE); } return mSharedPreferences.getString(key,defaultValue); } }运行效果:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/title_red_bg" > <ImageButton android:id="@+id/btn_back" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="5dp" android:background="@null" android:src="@drawable/back" /> <ImageButton android:id="@+id/btn_share" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_centerVertical="true" android:layout_marginRight="5dp" android:background="@null" android:src="@drawable/icon_share" /> <ImageButton android:id="@+id/btn_size" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginRight="5dp" android:layout_toLeftOf="@id/btn_share" android:background="@null" android:src="@drawable/icon_textsize" /> </RelativeLayout> <FrameLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <WebView android:id="@+id/wv_web" android:layout_width="match_parent" android:layout_height="match_parent" /> <ProgressBar android:id="@+id/pb_progress" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:indeterminateDrawable="@drawable/custom_progress" /> </FrameLayout> </LinearLayout>NewsDetailActivity.java
package com.xbmu.wisdombj; import android.app.Activity; import android.graphics.Bitmap; import android.os.Bundle; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ImageButton; import android.widget.ProgressBar; public class NewsDetailActivity extends Activity implements View.OnClickListener{ private WebView mWebView; private ImageButton btnBack; private ImageButton btnSize; private ImageButton btnShare; private ProgressBar pbProgress; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_detail); mWebView = (WebView) findViewById(R.id.wv_web); btnBack = (ImageButton) findViewById(R.id.btn_back); btnSize = (ImageButton) findViewById(R.id.btn_size); btnShare = (ImageButton) findViewById(R.id.btn_share); btnBack.setOnClickListener(this); btnSize.setOnClickListener(this); btnShare.setOnClickListener(this); pbProgress = (ProgressBar) findViewById(R.id.pb_progress); String url = getIntent().getStringExtra("url"); WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true);//表示支持js settings.setBuiltInZoomControls(true);//显示放大缩小按钮 settings.setUseWideViewPort(true);//支持双击缩放 mWebView.setWebViewClient(new WebViewClient() { /** * 网页开始加载 * @param view * @param url * @param favicon */ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); System.out.println("网页开始加载"); pbProgress.setVisibility(View.VISIBLE); } /** * 网页加载结束 * @param view * @param url */ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); System.out.println("网页开始结束"); pbProgress.setVisibility(View.GONE); } /** *所有跳转的链接都毁在此方法中回调 * @param view * @param url * @return */ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { System.out.println("跳转url:" + url); view.loadUrl(url); return true; // return super.shouldOverrideUrlLoading(view, url); } }); // mWebView.goBack(); mWebView.setWebChromeClient(new WebChromeClient(){ /** * 进度发生变化 * @param view * @param newProgress */ @Override public void onProgressChanged(WebView view, int newProgress) { System.out.println("加载进度:"+newProgress); super.onProgressChanged(view, newProgress); } /** * 获取网页标题 * @param view * @param title */ @Override public void onReceivedTitle(WebView view, String title) { System.out.println("网页标题:"+title); super.onReceivedTitle(view, title); } }); mWebView.loadUrl(url);//加载网页 } @Override public void onClick(View v) { } }运行效果:
package com.xbmu.wisdombj; import android.app.Activity; import android.content.DialogInterface; import android.graphics.Bitmap; import android.os.Bundle; import android.support.v7.app.AlertDialog; import android.view.View; import android.webkit.WebChromeClient; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.ImageButton; import android.widget.ProgressBar; public class NewsDetailActivity extends Activity implements View.OnClickListener{ private WebView mWebView; private ImageButton btnBack; private ImageButton btnSize; private ImageButton btnShare; private ProgressBar pbProgress; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_news_detail); mWebView = (WebView) findViewById(R.id.wv_web); btnBack = (ImageButton) findViewById(R.id.btn_back); btnSize = (ImageButton) findViewById(R.id.btn_size); btnShare = (ImageButton) findViewById(R.id.btn_share); btnBack.setOnClickListener(this); btnSize.setOnClickListener(this); btnShare.setOnClickListener(this); pbProgress = (ProgressBar) findViewById(R.id.pb_progress); String url = getIntent().getStringExtra("url"); WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true);//表示支持js settings.setBuiltInZoomControls(true);//显示放大缩小按钮 settings.setUseWideViewPort(true);//支持双击缩放 mWebView.setWebViewClient(new WebViewClient() { /** * 网页开始加载 * @param view * @param url * @param favicon */ @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); System.out.println("网页开始加载"); pbProgress.setVisibility(View.VISIBLE); } /** * 网页加载结束 * @param view * @param url */ @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); System.out.println("网页开始结束"); pbProgress.setVisibility(View.GONE); } /** *所有跳转的链接都毁在此方法中回调 * @param view * @param url * @return */ @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { System.out.println("跳转url:" + url); view.loadUrl(url); return true; // return super.shouldOverrideUrlLoading(view, url); } }); // mWebView.goBack(); mWebView.setWebChromeClient(new WebChromeClient(){ /** * 进度发生变化 * @param view * @param newProgress */ @Override public void onProgressChanged(WebView view, int newProgress) { System.out.println("加载进度:"+newProgress); super.onProgressChanged(view, newProgress); } /** * 获取网页标题 * @param view * @param title */ @Override public void onReceivedTitle(WebView view, String title) { System.out.println("网页标题:"+title); super.onReceivedTitle(view, title); } }); mWebView.loadUrl(url);//加载网页 } @Override public void onClick(View v) { switch (v.getId()){ case R.id.btn_back: finish(); break; case R.id.btn_size: showChooseDialog(); break; case R.id.btn_share: break; } } private int mCurrentChooseItem;//记录当前选中的item,点击确定前 private int mCurrentItem = 2;//记录当前选中的item,点击确定后 /** * 显示选择对话框 */ private void showChooseDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); String[] items = new String[] { "超大号字体", "大号字体", "正常字体", "小号字体", "超小号字体" }; builder.setTitle("字体设置"); builder.setSingleChoiceItems(items, mCurrentItem, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("选中:" + which); } }); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { WebSettings settings = mWebView.getSettings(); switch (mCurrentChooseItem) { case 0: settings.setTextSize(WebSettings.TextSize.LARGEST); break; case 1: settings.setTextSize(WebSettings.TextSize.LARGER); break; case 2: settings.setTextSize(WebSettings.TextSize.NORMAL); break; case 3: settings.setTextSize(WebSettings.TextSize.SMALLER); break; case 4: settings.setTextSize(WebSettings.TextSize.SMALLEST); break; default: break; } mCurrentItem = mCurrentChooseItem; } }); builder.setNegativeButton("取消",null); builder.show(); } }运行效果: