android实战练习项目:Sunny课程表的开发源码下载

时间:2017-02-14 08:47 来源:互联网 作者:源码搜藏收藏

  • 源码类别:项目源码
  • 源码大小:1.7 MB
  • 编码格式:gbk,utf8,不限
  • 运行环境:eclipse
  • 广告推荐

课程表是在一个正在外面创业的大神师兄(一直都是我学习的偶像,超厉害~)的帮助下,借鉴他的项目,资源图片也没怎么更改,刚好他的项目里面有很多涉及到的知识点我也是已经学过,并写过博客,我才能自己试着写出来。我尽量压缩博客的内容,让大家在较短的时间内理解实现方法,其实实现方法也非常简单的,先上效果图:
  

本来弄好了一张gif图来演示的,但是上传之后在草稿箱那里没能看到动态图的效果,今年才写的博客,所以很多博客的东西不熟悉,以后慢慢再学了。。
下面是内容:
1.首先大家都看到效果图是有登录界面的吧,我分享给大家的是没有登录界面的,因为我是通过Android程序登录到我们学校的教务系统,然后抓取一些我要的数据,里面一些信息就不透露了哈,不过实现原理还是会说下的。。。
原理:首先是通过HttpClient访问我们学校教务系统的网站,然后通过post一些教务系统需要的参数,有些朋友可能不清楚如何获这些参数,这里我是用HttpWatch来获取所需要post过去的参数的,如果不知道httpWatch是什么或者怎么用,建议还是学下,这东西以后用的概率应该很大才对,当然了,这是作为学生角度的个人看法,如果你有更好的方法,那就希望你告诉我下,让我也好好学习一下 ^_^  ... 还有关于HttpClient的使用,不熟悉的朋友可以去看我写的一篇关于HttpClient的使用,以前通过HttpClient试着写过《自动登录》,然后成功登录了一些网站,所以会使用HttpClient的话,想要进入自己学校的教务系统并抓取数据也不是难事哦。。
HttpClient的使用


好了,继续回归话题,httpClietn成功访问之后返回网站的html文档,接下来的工作就是对html文档进行解析,从而获取你要的数据,这里有两种方法:
(一)通过StringTokenizer类来分割字符串,关于这个类应该很多朋友还是没见过吧,有兴趣的可以去学下,看下这个API的使用
(二)通过很流行的Jsoup解析html,Jsoup是一个很不错的html解析工具,我觉得这个以后用到的概率也是非常高的(个人感觉)

我获取的是我这学期有关课表的数据,不要纠结我怎么是这些课程,哈哈,因为我是一名机械自动化的机电男呗。
好了,关于原理就介绍到这,把登录的模块减掉之后呢,我把这个课表项目所需要的数据存在SharedPreference跟SQLite里面,这两个文件我会上传,在学习的时候直接导到eclipse的模拟器上就行了,看图导入红框里面的文件便是。



好了,再写文字就要被吐槽了吧,还不上代码,我这就贴了:
首先是LoginActivity.java
[mw_shl_code=java,true]public class LoginActivity extends Activity {

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_login);
                
                // 通过读取sp中的user_name字段来判断用户是否已经登录过,如果登录过则直接进入课表界面
                if (!Util.readSharedPreference(LoginActivity.this, "jwinfo", "user_name").equals("")) {
                        Intent kbIntent = new Intent(LoginActivity.this, TimeTableActivity.class);
                        startActivity(kbIntent);
                        finish();
                }
        }
}[/mw_shl_code]

因为是去掉了登录教务系统跟抓取、解析数据的模块,所以这个代码就减成这个直接读取SharedPreference的数据来绕过登录了。。
接着是课表的Activity---TimeTableActivity.java
首先先回顾下效果图2的界面,这种界面的实现方法有很多种,我就说下我使用的方法吧。。。
ViewGroup+ViewPager+ListView
(一)ViewGroup:用这控件来做indicator,也是是界面上面的tab
(二)ViewPager:其实每个显示课表的界面就是一个ListView,而这个ViewPager就是这7个ListView的容器
(三)ListView:这个不解释了哈
不熟悉使用ViewGroup+ViewPager的朋友,还是建议看下我的这篇使用工具,因为如果你不熟悉的话,看这个TimeTableActivity.java真心会累觉不爱,而看懂了之后,你会发现,根本就是把这个东西ctrl+c+v弄过来的,学东西本来就像堆积木,小块的积木知道怎么拼了,就不怕拼不出你想要的效果啦。
ViewGroup+ViewPager的使用方法
TimeTableActivity.java我就贴部分代码了,因为里面的代码基本就在上面的博客中写过[mw_shl_code=java,true]public class TimeTableActivity extends Activity {

        private List<View> mListView;
        private ViewPager pager;
        private TextView imageView;
        private TextView[] imageViews;
        private ViewGroup group;
        private String[] days = { "周一", "周二", "周三", "周四", "周五", "周六", "周日" };

        @Override
        protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_time_table);

                mListView = new ArrayList<View>();

                TimeTableView view1 = new TimeTableView(TimeTableActivity.this, "一");
                TimeTableView view2 = new TimeTableView(TimeTableActivity.this, "二");
                TimeTableView view3 = new TimeTableView(TimeTableActivity.this, "三");
                TimeTableView view4 = new TimeTableView(TimeTableActivity.this, "四");
                TimeTableView view5 = new TimeTableView(TimeTableActivity.this, "五");
                TimeTableView view6 = new TimeTableView(TimeTableActivity.this, "六");
                TimeTableView view7 = new TimeTableView(TimeTableActivity.this, "日");

                mListView.add(view1.getView());
                mListView.add(view2.getView());
                mListView.add(view3.getView());
                mListView.add(view4.getView());
                mListView.add(view5.getView());
                mListView.add(view6.getView());
                mListView.add(view7.getView());

                pager = (ViewPager) findViewById(R.id.kbViewPager);
                pager.setAdapter(new MyPagerAdapter(mListView));

                imageViews = new TextView[mListView.size()];
                group = (ViewGroup) findViewById(R.id.viewGroup);

                Time time = new Time();
                time.setToNow();
                int currentDay;
                if (time.weekDay == 0) {
                        currentDay = 6;
                } else {
                        currentDay = time.weekDay;
                }

                pager.setCurrentItem(currentDay - 1);

                for (int i = 0; i < mListView.size(); i++) {
                        imageView = new TextView(TimeTableActivity.this);
                        imageView.setLayoutParams(new LinearLayout.LayoutParams(0, LayoutParams.MATCH_PARENT, 1.0f));
                        imageView.setGravity(Gravity.CENTER);
                        imageViews = imageView;

                        imageViews.setText(days.substring(1, 2));
                        imageViews.setBackgroundResource(R.drawable.daytitle_nochoice_bg);
                        imageViews.setTextColor(0xff858585);

                        if (i == currentDay - 1) {
                                System.out.println("currentDay>>" + currentDay);
                                // 根据当天的时间,默认选中的第一张图片
                                imageViews.setBackgroundResource(R.drawable.daytitle_bg);
                                imageViews.setTextColor(0xff000000);
                        }

                        final int currentIndex = i;

                        imageViews.setOnClickListener(new OnClickListener() {

                                @Override
                                public void onClick(View v) {
                                        // TODO Auto-generated method stub
                                        pager.setCurrentItem(currentIndex);
                                }
                        });
                        group.addView(imageViews);
                }

                pager.setOnPageChang
本站资源仅限于学习研究,严禁从事商业或者非法活动! 源码搜藏网所有源码来自互联网转载与用户上传分享,如果侵犯了您的权益请与我们联系,我们将在24小时内删除!谢谢!

项目源码下载排行

最新文章