《新闻阅读器》总结”五“
来源:互联网 发布:淘宝可以绑定信用卡吗 编辑:程序博客网 时间:2024/05/29 05:56
上全部代码:
MainActivity:
这里有一个方法:
获得viewPager当前停留的页面
.addOnPageChangeListener()
/** * 1.实现选项卡的切换,点击RadioButton,跳转到指定的页面 * 2.实现ViewPager的切换,并让对应的RadioButton字体颜色发生改变 * 3.让自定义的 "指示条" 随着ViewPager的切换而移动 * */public class MainActivity extends FragmentActivity implements View.OnClickListener { private List<Fragment> mFragmentList; private ViewPager mViewPager; private MyFragmentPagerAdapter mFragmentPagerAdapter; private RadioButton rbTop; private RadioButton rbYule; private RadioButton rbGuonei; private RadioButton rbTiyu; private RadioButton rbKeji; private TextView tvLine; private int screen1_5; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initVariable(); initData(); bindAdapter(); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams) tvLine.getLayoutParams(); lp.leftMargin = (int) (positionOffset * screen1_5) + screen1_5 * position; tvLine.setLayoutParams(lp); } @Override public void onPageSelected(int position) {//返回所在页面的位置,设置匹配选项卡的颜色 clearColor(); switch (position) { case 0: rbTop.setTextColor(Color.parseColor("#0026ff")); break; case 1: rbYule.setTextColor(Color.parseColor("#0026ff")); break; case 2: rbGuonei.setTextColor(Color.parseColor("#0026ff")); break; case 3: rbKeji.setTextColor(Color.parseColor("#0026ff")); break; case 4: rbTiyu.setTextColor(Color.parseColor("#0026ff")); break; } } @Override public void onPageScrollStateChanged(int state) { } }); initListener(); } void initVariable() { mFragmentList = new ArrayList<>(); mViewPager = (ViewPager) findViewById(R.id.vpViewPager); rbGuonei = (RadioButton) findViewById(R.id.rbGuonei); rbTiyu = (RadioButton) findViewById(R.id.rbTiyu); rbTop = (RadioButton) findViewById(R.id.rbTop); rbYule = (RadioButton) findViewById(R.id.rbYule); rbKeji = (RadioButton) findViewById(R.id.rbKeji); tvLine = (TextView) findViewById(R.id.tvLine); } void initListener() { rbTop.setOnClickListener(this); rbGuonei.setOnClickListener(this); rbYule.setOnClickListener(this); rbTiyu.setOnClickListener(this); rbKeji.setOnClickListener(this); } void initData() { mFragmentList.add(new TopFragment()); mFragmentList.add(new YuleFragment()); mFragmentList.add(new GuoneiFragment()); mFragmentList.add(new KejiFragment()); mFragmentList.add(new TiyuFragment()); //获得屏幕宽度 DisplayMetrics metric = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metric); int width = metric.widthPixels; // 屏幕宽度(像素) screen1_5 = width / 5; ViewGroup.LayoutParams zy = tvLine.getLayoutParams(); zy.width = screen1_5; tvLine.setLayoutParams(zy); } void bindAdapter() { mFragmentPagerAdapter = new MyFragmentPagerAdapter(getSupportFragmentManager(), mFragmentList); mViewPager.setAdapter(mFragmentPagerAdapter); } void clearColor() { rbTop.setTextColor(Color.parseColor("#ff0004")); rbYule.setTextColor(Color.parseColor("#ff0004")); rbGuonei.setTextColor(Color.parseColor("#ff0004")); rbKeji.setTextColor(Color.parseColor("#ff0004")); rbTiyu.setTextColor(Color.parseColor("#ff0004")); } @Override public void onClick(View view) { switch (view.getId()) {//.setCurrentItem(2) 设置所显示的页面 case R.id.rbGuonei: mViewPager.setCurrentItem(2); break; case R.id.rbTiyu: mViewPager.setCurrentItem(4); break; case R.id.rbYule: mViewPager.setCurrentItem(1); break; case R.id.rbTop: mViewPager.setCurrentItem(0); break; case R.id.rbKeji: mViewPager.setCurrentItem(3); break; } }}WebViewActivity:
/** * webView 的使用方法 */public class WebViewActivity extends Activity { private static final String TAG = "WebViewActivity"; private WebView mWebView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.webview); Intent intent = getIntent(); String url = intent.getStringExtra("url"); Log.i(TAG, url); mWebView = (WebView) findViewById(R.id.webView); mWebView.loadUrl(url); }}
NewsListViewAdapter:
public class NewsListViewAdapter extends BaseAdapter { private List<MyNews> mList; private Context mContext; private static final String TAG="NewsListViewAdapter"; public NewsListViewAdapter(Context pContext, List<MyNews> pList) { mList = pList; mContext = pContext; } @Override public int getCount() { return mList.size(); } @Override public Object getItem(int i) { return mList.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int i, View view, ViewGroup viewGroup) { ViewHolder mHolder; if (view == null) { mHolder = new ViewHolder(); view = LayoutInflater.from(mContext).inflate(R.layout.listview_item, null); mHolder.author = (TextView) view.findViewById(R.id.tvAuthor); mHolder.time = (TextView) view.findViewById(R.id.tvTime); mHolder.title = (TextView) view.findViewById(R.id.tvTitle); mHolder.img = (ImageView) view.findViewById(R.id.imageView1); view.setTag(mHolder); } else { mHolder = (ViewHolder) view.getTag(); } String sAuthor = "来自:" + mList.get(i).author; String sTime = "发表时间:" + mList.get(i).date; mHolder.author.setText(sAuthor); mHolder.time.setText(sTime); mHolder.title.setText(mList.get(i).title); Log.d(TAG, mList.get(i).imgURl1); if (TopFragment.zangyi==2) {//打开网络通过子线程加载图片并显示 String mUrl=mList.get(i).imgURl1; mHolder.img.setTag(mUrl); new ImageLoader().showImage(mHolder.img,mUrl);//从网络上获取图片 } else {//否则显示默认的图片 mHolder.img.setImageResource(R.mipmap.ic_launcher); } return view; } class ViewHolder { TextView author; TextView time; TextView title; ImageView img; }}
/** * 1.启动时,mTopList 从数据库中通过(getData)获得数据源, * 绑定ListViewAdapter,显示ListView。 * 2.按下"下拉刷新按钮"时,通过UrlGetJson这个类获取新闻json数据源, * 并通过Handler,调用mParseJson这个类来解析json数据源,存储到数据库中, * 在从数据库中重新获得数据源,并通知ListView更新。 */public class TopFragment extends Fragment { private List<MyNews> mTopList; private ListView mListView; private NewsListViewAdapter mAdapter; private static final String mType = "Top"; private static final String TAG = "TopFragment"; public static int zangyi = 1; private Button btHaveNet; private Handler mHandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 10086: String json = (String) msg.obj; Log.i(TAG, json); //进行json解析 NewsDB mNewsDB2 = NewsDB.getNewDB(getContext()); mNewsDB2.deleteAll(mType); //调用ParseJson这个类进行json解析 ParseJson mParseJson = new ParseJson(getContext(), json, mType); mParseJson.parseJSONWithJSONObject(); //从数据库中返回数据 通知ListView更新 mTopList.addAll(mNewsDB2.getData(mType)); if (mTopList.size() > 0 && mAdapter != null) { mAdapter.notifyDataSetChanged(); Log.e(TAG, "通知更新"); } break; } } }; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View mView = inflater.inflate(R.layout.top_fragment, null); Button btSend = (Button) mView.findViewById(R.id.btTobSend); mTopList = new ArrayList<>(); mListView = (ListView) mView.findViewById(R.id.lvTop); btHaveNet = (Button) mView.findViewById(R.id.btHaveNet); //从数据库中获得数据源 NewsDB hi = NewsDB.getNewDB(getContext()); mTopList.addAll(hi.getData(mType)); mAdapter = new NewsListViewAdapter(getContext(), mTopList); mListView.setAdapter(mAdapter); btHaveNet.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (zangyi == 1) { zangyi = 2; btHaveNet.setText("网络已开"); } else { zangyi = 1; btHaveNet.setText("网络已关"); } } }); btSend.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { UrlGetJson mHttp = new UrlGetJson(mHandler, mType); mHttp.sendRequestWithHttpURLConnection(); } }); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { Intent intent = new Intent(getActivity(), WebViewActivity.class); intent.putExtra("url", mTopList.get(i).newURL); startActivity(intent); } }); return mView; }}
0 0
- 《新闻阅读器》总结”五“
- 《新闻阅读器》总结“一”
- 《新闻阅读器》总结”三“ ImageLoader
- 新闻阅读器
- 《新闻阅读器》总结”四“从网络获取数据
- 今日头条新闻阅读器 (三) 完结 、总结 篇
- SWT 新闻阅读器
- android自制新闻阅读器
- 网易新闻RSS阅读器
- 新闻阅读器频道管理
- 用C#制作新闻阅读器
- 用C#制作新闻阅读器
- C# rss新闻阅读器源码
- 五个最佳RSS新闻阅读器
- 今日头条新闻阅读器
- 今日头条 --新闻阅读器
- 微信小程序—新闻阅读器
- (android高仿系列)今日头条 --新闻阅读器 (三) 完结 、总结 篇
- Android Studio中创建java项目
- FMDB简单介绍
- Swift之修改选中TabBarItem图片时显示的默认蓝色
- Flume官方文档翻译之(一)
- iOS -- 应用程序国际化(多语言)
- 《新闻阅读器》总结”五“
- Html5知识点2
- ssh中使用junit
- H265 专利费修正
- 关于maven部署项目到tomcat上403问题
- 分页机制(个人理解)
- Html5知识点3
- 深入理解Object-C消息转发机制
- bootstrap-sass_源码解析四:Utility