android网络编程---“八卦头条”app开发总结

4 篇文章 0 订阅
2 篇文章 0 订阅

八卦头条 git代码下载:
https://github.com/vae260772/TopNews

最近写了个app,做个总结。

实现设计到的技术
1)Activity+fragment的 数据传递
2)viewpager+fragment的结合使用,包括fragment的设置缓存数据页面状态,fragment动态添加/删除
添加可以选择支持的分类,这些分类是由服务器控制的,支持多选。
删除可以选择除当前界面的其他fragment,支持多选

3)actionbar的使用,其中设计到sdk api的版本,是否兼容低版本的手机问题,android.app.ActionBar、
android.support.v7.widget.ActionBar,
样式theme设置,
bar中设置menu菜单点击问题。
4)顶部切换的导航栏,使用第三方库。viewpager指示器:ViewPagerIndicator-library
滚动的banner使用了,cn.bingoogolapple.bgabanner.BGABanner
,其中banner中添加的网络图片加载使用了
com.bumptech.glide.Glide

5)fragment中主页使用recycleview显示。
下拉刷新的实现使用了第三方com.handmark.pulltorefresh.library.PullToRefreshBase,
但是由于第三方不支持recycleview显示数据,所以在第三方的代码基础上,扩展了刷新功能,支持
recycleview的显示。
pullToRefreshrecycleview = (PullToRefreshRecyclerView) view.findViewById(R.id.listView);
recycleview = pullToRefreshrecycleview.getRefreshableView();

6)我的新闻相关数据使用了
https://www.juhe.cn/docs/api/id/235
聚合数据新闻头条。
在首次启动应用时候,会自动从服务器获取数据,解析显示。之后用户可以自己刷新加载最新新闻。
从服务器获取数据:
使用Retrofit2.0
Retrofit retrofit = new Retrofit.Builder().
baseUrl(“http://v.juhe.cn/“).
addConverterFactory(GsonConverterFactory.create()).build();
call.enqueue(new Callback() {…}
获取服务器返回结果,
失败,通过handler+toast给出错误提示
成功,org.json.JSONObject进行解析。

7)RecyclerView.Adapter
涉及到item重用。
其中item中的图片显示使用了
com.nostra13.universalimageloader.core.ImageLoader
adapter中设置item的点击事件
((CustomViewHolder) viewholder).list_item.setOnLongClickListener(new CustomListener(data));

长按弹出对话框
Utils.showOperateDialog(context, data, null);

可以点击收藏、在浏览器打开、分享给别人。
收藏:

收藏功能把数据保存在数据库中SQLiteOpenHelper
DBUtils db = new DBUtils(context);
db.insert(data);

在浏览器打开:
通过网址打开
Uri uri = Uri.parse(url);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
context.startActivity(intent);

分享:
简单的使用了系统分享:
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType(“text/plain”);
intent.putExtra(Intent.EXTRA_SUBJECT, “分享”);
intent.putExtra(Intent.EXTRA_TEXT,
“我正在浏览这条新闻,觉得真不错,推荐给你哦~地址点这里:\n” + data.getUrl());
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(Intent.createChooser(intent, “share”));
效果

以上是主页涉及到的技术。

8)向右侧滑弹出menu。SlidingMenu
menu = new SlidingMenu(this);
menu.setMode(SlidingMenu.LEFT);
// 设置触摸屏幕的模式
menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);

// 设置滑动菜单视图的宽度
menu.setBehindOffsetRes(R.dimen.slidingmenu_offset);
// 设置渐入渐出效果的值
menu.setFadeEnabled(false)
menu.attachToActivity(this, SlidingMenu.SLIDING_CONTENT);
//为侧滑菜单设置布局
menu.setMenu(R.layout.left_menu);

实现侧滑菜单。节省空间。这里设置setBehindOffsetRes参数比较麻烦。
9)侧滑验证码登录实现。
登录验证码这个使用的三方支持
import cn.smssdk.EventHandler;
import cn.smssdk.SMSSDK;
import cn.smssdk.gui.RegisterPage;
这个需要用户自己去注册审核,才可以真正免费,否则一天测试的短信有限制!!!
地址申请:
http://www.mob.com/
通过三方的sdk获取验证码,验证通过后,我把登录的用户手机号记录下来
保存在SharedPreferences 中,
用户注销登录,在把登录的用户设置为空。
这里登录没有实质性的作用,只是实现一个小功能而已。
android:layout_width=”match_parent”
android:layout_height=”wrap_content”>

android:id=”@+id/email”
android:layout_width=”match_parent”
android:layout_height=”wrap_content”
android:hint=”@string/prompt_email”
android:inputType=”phone”
android:maxLines=”1”
android:singleLine=”true” />

其中登录界面有个动画文字提示效果TextInputLayout
10)查看收藏
数据显示使用了

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;
最终是使用listview
之所以使用PullToRefreshListView是想做一个刷新加载其他收藏的新闻。
默认显示4条条新闻,如果还有收藏的,每次上拉、下拉刷新加载一条。

actionbar中支持搜索关键字查找收藏的新闻。
menu中隐藏action全屏显示功能,下拉刷新时候可以再次显示出来。

使收藏和主页界面主题风格一致。
使用了Theme.Holo风格。
注意:如果你的Activity继承actionbaractivity,那你就不能使用Theme.Holo风格,低版本不能使用高版本的
主题,解决方案网上也有,不折腾了,干脆不支持低版本吧!!!

好了,大致的功能介绍如此。
这里写图片描述

这里写图片描述

这里写图片描述
这里写图片描述

这里写图片描述这里写图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值