大家下午好。。。如果在学校,到时间吃晚饭了。。。。隔了好久才重新敲代码。。。又落后那么多了,要更加努力学习了。。。。今天下午写了下app的第四部分。。。 这里给下之前三部分的地址,因为如果第一次看,,,可能会莫名其妙。。。可能把,,,或许是我想多了:
android真实项目教程(一)——App应用框架搭建_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166151
android真实项目教程(二)——漫画App初构_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166262
android真实项目教程(三)——首页初点缀_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=166630

android真实项目教程(四)——MY APP MY STYLE_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=167676
android真实项目教程(五)——有时三点两点雨_by_CJJ http://www.apkbus.com/forum.php?mod=viewthread&tid=168422

第四部分完成了首页的界面设计及分类加入旋转木马作为选择分类的选项,看下效果图把:

主要代码:

  1. package com.cjj.shopapp.fragment;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import android.graphics.Color;
  5. import android.graphics.drawable.ColorDrawable;
  6. import android.os.Bundle;
  7. import android.support.v4.app.Fragment;
  8. import android.support.v4.view.ViewPager;
  9. import android.util.Log;
  10. import android.view.LayoutInflater;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.GridView;
  14. import android.widget.ImageView;
  15. import android.widget.LinearLayout;
  16. import android.widget.TextView;
  17. import com.cjj.shopapp.activity.R;
  18. import com.cjj.shopapp.adapter.CategoryAdapter;
  19. import com.cjj.shopapp.adapter.RecommendAdapter;
  20. import com.cjj.shopapp.adapter.ViewPagerAdvAdapter;
  21. import com.cjj.shopapp.models.CategoryInfo;
  22. import com.cjj.shopapp.models.ShopAppApplication;
  23. import com.cjj.shopapp.constants.Constants;;
  24. public class HomeFragment extends Fragment {
  25. private ViewPager vp_ad;
  26. private ImageView[] mImageViews;
  27. private int currentPosition = 0;
  28. private TextView tv_title;
  29. private GridView gv_category, gv_recommend;
  30. private List<CategoryInfo> mList = new ArrayList<CategoryInfo>();
  31. int[] recommend_icon = new int[] { R.drawable.huoying_bg,
  32. R.drawable.haizie_bg, R.drawable.heizi, R.drawable.sishen_bg };
  33. String[] recommend_msg = new String[] { "火影忍者", "海贼王", "黑子的篮球", "死神" };
  34. @Override
  35. public void onActivityCreated(Bundle savedInstanceState) {
  36. // 获得服务端广告图片,这里我们就简单的直接取本地数据
  37. getAdData();
  38. getCategoryData();
  39. getRecommendData();
  40. super.onActivityCreated(savedInstanceState);
  41. }
  42. /**
  43. * 获取gridView推荐漫画的数据
  44. */
  45. private void getRecommendData() {
  46. List<CategoryInfo> list2 = new ArrayList<CategoryInfo>();
  47. for (int i = 0; i < recommend_icon.length; i++) {
  48. CategoryInfo categoryInfo = new CategoryInfo();
  49. categoryInfo.setIcon(recommend_icon[i]);
  50. categoryInfo.setMsg(recommend_msg[i]);
  51. list2.add(categoryInfo);
  52. }
  53. gv_recommend.setSelector(new ColorDrawable(Color.TRANSPARENT));
  54. gv_recommend.setAdapter(new RecommendAdapter(getActivity(), list2));
  55. }
  56. /**
  57. * 获得gridView分类数据
  58. */
  59. private void getCategoryData() {
  60. gv_category.setSelector(new ColorDrawable(Color.TRANSPARENT));
  61. gv_category.setAdapter(new CategoryAdapter(getActivity(), ShopAppApplication.mDatas));
  62. }
  63. /**
  64. * 获得广告数据
  65. */
  66. private void getAdData() {
  67. List<Integer> list = new ArrayList<Integer>();
  68. list.add(R.drawable.huoying);
  69. list.add(R.drawable.caomao);
  70. list.add(R.drawable.yinhun);
  71. list.add(R.drawable.diguang);
  72. list.add(R.drawable.jianxin);
  73. vp_ad.setAdapter(new ViewPagerAdvAdapter(getActivity(), list));
  74. vp_ad.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
  75. @Override
  76. public void onPageSelected(int position) {
  77. super.onPageSelected(position);
  78. setCurPoint(position);
  79. }
  80. });
  81. }
  82. private void setCurPoint(int index) {
  83. if (index < 0 || index > mImageViews.length || index == currentPosition) {
  84. return;
  85. }
  86. mImageViews[currentPosition].setEnabled(true);
  87. mImageViews[index].setEnabled(false);
  88. // set tv title
  89. switch (index) {
  90. case 0:
  91. tv_title.setText("火影忍者");
  92. break;
  93. case 1:
  94. tv_title.setText("海贼王");
  95. break;
  96. case 2:
  97. tv_title.setText("银魂");
  98. break;
  99. case 3:
  100. tv_title.setText("黑子的篮球");
  101. break;
  102. case 4:
  103. tv_title.setText("浪客剑心");
  104. break;
  105. }
  106. currentPosition = index;
  107. }
  108. @Override
  109. public void onCreate(Bundle savedInstanceState) {
  110. super.onCreate(savedInstanceState);
  111. }
  112. @Override
  113. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  114. Bundle savedInstanceState) {
  115. return inflater.inflate(R.layout.fragment_home, null);
  116. }
  117. @Override
  118. public void onDestroyView() {
  119. super.onDestroyView();
  120. }
  121. @Override
  122. public void onViewCreated(View view, Bundle savedInstanceState) {
  123. super.onViewCreated(view, savedInstanceState);
  124. vp_ad = (ViewPager) view.findViewById(R.id.vp_ad);
  125. tv_title = (TextView) view.findViewById(R.id.tv_title);
  126. gv_category = (GridView) view.findViewById(R.id.gv_category);
  127. gv_recommend = (GridView) view.findViewById(R.id.gv_recommend);
  128. createPoint(view);
  129. }
  130. private void createPoint(View view) {
  131. // six index round point
  132. LinearLayout ll = (LinearLayout) view.findViewById(R.id.llayout);
  133. LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
  134. LinearLayout.LayoutParams.WRAP_CONTENT,
  135. LinearLayout.LayoutParams.WRAP_CONTENT);
  136. lp.setMargins(0, 0, 12, 0);
  137. mImageViews = new ImageView[5];
  138. for (int i = 0; i < mImageViews.length; i++) {
  139. mImageViews[i] = new ImageView(getActivity());
  140. mImageViews[i].setImageResource(R.drawable.guide_round);
  141. mImageViews[i].setEnabled(true);
  142. mImageViews[i].setLayoutParams(lp);
  143. ll.addView(mImageViews[i]);
  144. }
  145. mImageViews[currentPosition].setEnabled(false);
  146. }
  147. }

复制代码

  1. package com.cjj.shopapp.fragment;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. import com.ab.view.carousel.CarouselAdapter;
  5. import com.ab.view.carousel.CarouselView;
  6. import com.ab.view.carousel.CarouselViewAdapter;
  7. import com.ab.view.carousel.CarouselAdapter.OnItemClickListener;
  8. import com.ab.view.carousel.CarouselAdapter.OnItemSelectedListener;
  9. import com.cjj.shopapp.activity.R;
  10. import com.cjj.shopapp.constants.Constants;
  11. import com.cjj.shopapp.models.CategoryInfo;
  12. import com.cjj.shopapp.models.ShopAppApplication;
  13. import android.os.Bundle;
  14. import android.support.v4.app.Fragment;
  15. import android.util.Log;
  16. import android.view.Gravity;
  17. import android.view.LayoutInflater;
  18. import android.view.View;
  19. import android.view.ViewGroup;
  20. import android.view.ViewGroup.LayoutParams;
  21. import android.widget.ImageView;
  22. import android.widget.TextView;
  23. import android.widget.Toast;
  24. public class CategoryFragment extends Fragment implements OnItemClickListener,OnItemSelectedListener{
  25. private CarouselView carousel;
  26. @Override
  27. public void onActivityCreated(Bundle savedInstanceState) {
  28. getCategoryData();
  29. super.onActivityCreated(savedInstanceState);
  30. }
  31. private void getCategoryData() {
  32. // 不支持的动态添加adapter.notifyDataSetChanged()增强滑动的流畅
  33. List<View> mViews = new ArrayList<View>();
  34. List<CategoryInfo> data = new ArrayList<CategoryInfo>();
  35. for (int i = 0; i < Constants.category_msg.length; i++) {
  36. CategoryInfo categoryInfo2 = new CategoryInfo();
  37. categoryInfo2.setIcon(Constants.category_icon[i]);
  38. categoryInfo2.setMsg(Constants.category_msg[i]);
  39. data.add(categoryInfo2);
  40. }
  41. for (int i = 0; i < data.size(); i++) {
  42. View view = getActivity().getLayoutInflater().inflate(
  43. R.layout.item_carousel_view, null);
  44. ImageView icon = (ImageView) view.findViewById(R.id.itemsIcon);
  45. icon.setImageResource(data.get(i).getIcon());
  46. TextView msg = (TextView) view.findViewById(R.id.itemsText);
  47. msg.setText(data.get(i).getMsg());
  48. mViews.add(view);
  49. }
  50. CarouselViewAdapter adapter = new CarouselViewAdapter(getActivity(),
  51. mViews, false);
  52. carousel.setOnItemClickListener(this);
  53. carousel.setOnItemSelectedListener(this);
  54. carousel.setAdapter(adapter);
  55. }
  56. @Override
  57. public void onCreate(Bundle savedInstanceState) {
  58. super.onCreate(savedInstanceState);
  59. }
  60. @Override
  61. public View onCreateView(LayoutInflater inflater, ViewGroup container,
  62. Bundle savedInstanceState) {
  63. View v = inflater.from(getActivity()).inflate(
  64. R.layout.fragment_category, null);
  65. return v;
  66. }
  67. @Override
  68. public void onDestroyView() {
  69. super.onDestroyView();
  70. }
  71. @Override
  72. public void onViewCreated(View view, Bundle savedInstanceState) {
  73. carousel = (CarouselView) view.findViewById(R.id.carousel);
  74. super.onViewCreated(view, savedInstanceState);
  75. }
  76. @Override
  77. public void onItemSelected(CarouselAdapter<?> parent, View view,
  78. int position, long id) {
  79. Toast.makeText(getActivity(), " slect position="+position, 1000).show();
  80. }
  81. @Override
  82. public void onNothingSelected(CarouselAdapter<?> parent) {
  83. }
  84. @Override
  85. public void onItemClick(CarouselAdapter<?> parent, View view, int position,
  86. long id) {
  87. Toast.makeText(getActivity(), " onclick position="+position, 1000).show();
  88. }
  89. }

复制代码

还是那句话,还是看源码吧。。写的可能不是那么合理,如果你有什么建议,可以留言告诉我的 ,我也希望能进步。。。
呵呵 !!!!

android真实项目教程(四)——MY APP MY STYLE_by_CJJ相关推荐

  1. android真实项目教程(二)——漫画App初构_by_CJJ

    大家晚上好,我是CJJ,继昨天写好框架之后,今天上班一直在想做什么东西...本来想拿我即将要上交的毕业设计做教程的,但是想想好像在重复工作那样子....呵呵 ... 伟大的先人说过,不要重复制造轮子. ...

  2. android真实项目教程(一)——App应用框架搭建_by_CJJ

    大家好,我是CJJ,学android半年了,仍然是菜虫一只......为了进步,想把自己知道的知识和初学者分享,也希望路过的大神能给些意见....呵呵......开始今天的教程吧,晕,不敢说教程了 , ...

  3. android真实项目教程(七)——梦醒边缘花落_by_CJJ

    大家下午好,我是CJJ,说说昨晚挑灯夜写毕业论文到凌晨三点多,当写到致谢词那块时,我违心的写下: " 本论文在xxx导师的悉 心指导和亲切关怀下完成的.导师渊博的专业知识.严谨的治学态度,精 ...

  4. android真实项目教程(六)——落叶醉赤壁_by_CJJ

    大家晚上好,我是cjj,今天不讲废话,因为我被"忙"了... 今晚主要把关于的界面(aboutFragment)完成了...效果很好哦 (自吹一下)...呵呵...其中有两个比较好 ...

  5. android真实项目教程(五)——有时三点两点雨_by_CJJ

    大家傍晚好,我是cjj,过多十几分钟就下班了,肚子饿到要死,马上可以吃饭了...呵呵...最近事情很多,要做毕设写论文,又要上班,班里又搞什么班照,系里又一些鸡毛小事就可以累死你...晕...好像在传 ...

  6. android真实项目教程(三)——首页初点缀_by_CJJ

    大家晚上好,CJJ不好,前天打球,把右手弄脱臼了...搞得我现在只能一只手敲代码...那效率,我给自己跪了 ...写了好久,才写了那么一丁点...明明还有好多要说的...也只能等手好了再继续吧...呵 ...

  7. android 测试工具,Android开源项目第四篇:开发及测试工具篇

    本文为那些不错的Android开源项目第四篇--开发工具篇,**主要介绍Android开发工具和测试工具相关的开源项目**. Android开源项目系列汇总已完成,包括: 1.Buck faceboo ...

  8. 史上最详细的Android Studio系列教程四--Gradle基础

    史上最详细的Android Studio系列教程四--Gradle基础 转载于:https://www.cnblogs.com/zhujiabin/p/5125917.html

  9. Android高手进阶教程(四)之----Android 中自定义属性(attr.xml,TypedArray)的使用!

    今天我们的教程是根据前面一节扩展进行的,如果你没有看,请点击 Android高手进阶教程(三) 查看第三课,这样跟容易方便你的理解! 在xml 文件里定义控件的属性,我们已经习惯了android:at ...

最新文章

  1. Jedis干什么用的
  2. 记录 之 Argparse 中的 可选参数 action 用法
  3. Python打包EXE神器 pyinstaller
  4. JS获取元素的offsetTop,offsetLeft等相关属性
  5. 【codevs1078】最小生成树,prim算法
  6. 【紫书】(UVa12096) The SetStack Computer
  7. 【pytorch】深度学习提速之自动混合精度
  8. 如何让研发薪酬更具有吸引力?华为、阿里、腾讯的方法值得借鉴
  9. 觅风易语言[1-10]
  10. QQ导出的txt聊天记录导入数据库方法
  11. PTA 哈利·波特的考试(Floyd计算最短距离并输出路径)
  12. 【嵌入式系统开发12】在stm32F103C8T6环境下,用HAL库,采用中断模式编程,控制LED的高亮与熄灭
  13. Retrofit基本使用
  14. HTML2——图像、超链接
  15. Exception raised: Traceback (most recent call last):
  16. ubuntu下使用github安装R Packages[已解决]
  17. OpenStack Kolla-Ansible部署Trove数据库服务Daas,部署Ceilometer数据收集服务,Gnocchi对接Ceph
  18. 微信小程序开发—小程序开发入门
  19. codevs[3145]汉诺塔游戏
  20. mysql 查询每天某个时间段的数据_mysql 中,统计一个时间段内每天8时到12时的数据的查询语句怎么写?...

热门文章

  1. 如何用PyTorch训练图像分类器
  2. 在前端团队的那些日子(初见)
  3. Linux用户与组命令之groupadd
  4. JQuery选择器中含有冒号的ID处理差异的分析
  5. Left join ,Right join ,inner join 的运行结果的区别
  6. Magento2创建自定义Widget 并通过添加图片选择器插入图片
  7. Asp.net MVC验证哪些事(2)-- 验证规则总结以及使用
  8. 腾讯安全上海游戏部门笔试题
  9. C++ operator关键字(重载操作符)(转)
  10. android学习中常见问题集锦