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

    xiaoxiao2021-03-25  106

    八卦头条 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风格,低版本不能使用高版本的 主题,解决方案网上也有,不折腾了,干脆不支持低版本吧!!!

    好了,大致的功能介绍如此。

    转载请注明原文地址: https://ju.6miu.com/read-22440.html

    最新回复(0)