Android 重构学院新闻 App 记录

来源:互联网 发布:软件系统标准规范 编辑:程序博客网 时间:2024/05/23 01:56

前言

Android 已经到了material design 了,而我的应用还是老样式,所以想基于最新的控件重构一下代码,这儿做下记录。

  • AppCompatActivity代替了 Activity
  • RecyclerView 代替了 ListView,方便实现瀑布流、九宫格形
  • ToolBar 代替 ActionBar
  • 新的 Dialog 对话框
  • support V7 是最低兼容 Android 2.1 (API level 7) ,V4 是兼容Android 1.6 (API level 4)
  • NavigationView

改变 ToolBar 的颜色

将小圆点置为白色

<android.support.v7.widget.Toolbar    android:id="@+id/toolbar"    android:layout_width="match_parent"    android:layout_height="wrap_content"    android:minHeight="?attr/actionBarSize"    android:background="?attr/colorPrimary"    app:contentInsetLeft="0dp"    app:contentInsetStart="0dp"    android:contentInsetRight="0dp"    android:contentInsetEnd="0dp"    app:contentInsetRight="0dp"    app:contentInsetEnd="0dp"       android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"    app:popupTheme="@style/ThemeOverlay.AppCompat.Light"    app:layout_scrollFlags="scroll|enterAlways"></android.support.v7.widget.Toolbar>

To Do

查看 fresco 源码,注意是缓存这儿的实现

对于 android 插入 sqlite 数据库 ,有使用注解的方法实现,可以使用这个库
https://github.com/pardom/ActiveAndroid

jsoup 的源码,深度遍历 dom

新闻详情左右滑动,上一个新闻,下一个新闻

报警系统,如果页码解析不一致,就发送邮件给我

发送邮件报警

基于 javamail,计算方法调用,时间戳,原始页面

也可以有另外一种方案,把爬虫记录都保存在数据库里面,加一个失败或者成功的 field。循环监听这个数据库,如果有失败的记录,再去找相应的 log,把 log 文件发出到邮件。

图片地址一般是相对路径 /uploads/image/20141120/**3831_60451.png
但偶尔也会是绝对路径 http://see.xidian.edu.cn/uploads/image/20141120/201**1.png
或者说其他网站的图片链接 http://blog.csdn.net/never_cxb

  • 场景1 比如图片不一定都是相对地址,存放在/upload 文件夹下面,可能是外网的图片,这时候对于特殊的图片 url 需要发到邮箱审核一下。
  • 场景2

Quartz 实现定时任务

每天晚上凌晨爬虫,定时任务

架构

model -> javabea 一些 Article 类
adapter -> 存放 recycleView 的 adapter

功能的

沉浸式布局

android.support.v4.view.ViewPager 实现了图片轮播效果,Timer 实现了自动轮播,复写了ViewPager.OnPageChangeListener的onPageScrollStateChanged(int state)实现了首尾切换图片的效果

Android Support Design 中的 TabLayout 实现顶部栏目左右滑动切换效果

AsyncTask异步获取图片

利用 View 划一条横线

<View    android:layout_width="match_parent"    android:layout_height="1dp"    android:layout_marginBottom="5dp"    android:layout_marginTop="5dp"    android:background="@color/colorAccent" />
    //获取 fragment 依赖的 Activity,方便使用 Context    private Activity mAct;    @Nullable    @Override    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {        View view = inflater.inflate(R.layout.fragment_one_latest,container,false);        mAct = getActivity();        return view;    }

Toolbar

mToolbar = (Toolbar) findViewById(R.id.toolbar);// toolbar.setLogo(R.drawable.ic_launcher);mToolbar.setTitle("Rocko");// 标题的文字需在setSupportActionBar之前,不然会无效// toolbar.setSubtitle("副标题");setSupportActionBar(mToolbar);/* 这些通过ActionBar来设置也是一样的,注意要在setSupportActionBar(toolbar);之后,不然就报错了 */// getSupportActionBar().setTitle("标题");// getSupportActionBar().setSubtitle("副标题");// getSupportActionBar().setLogo(R.drawable.ic_launcher);

上面关键的一点就是setSupportActionBar(mToolbar);把Toolbar当做ActionBar给设置了

Android Material Design之Toolbar与Palette实践 http://blog.csdn.net/bbld_/article/details/41439715

遇到的坑

java.lang.IllegalStateException: ScrollView can host only one direct child

ScrollView里面只能有一个元素,viewpager + Recyclerview 都嵌套在里面是不行的

有用网址

ButterKnifeZelezny 利用注解方便获取 ID
https://github.com/avast/android-butterknife-zelezny

material 在线搭配,可以获取颜色编码,xml 或
者http://www.materialpalette.com/

国外的图标库,选中和未选中状态下图标是不同的
http://www.icons4android.com/

来自阿里的图标库 http://www.iconfont.cn/

这里写图片描述

这里写图片描述

0 0
原创粉丝点击