周末闲着没事,老师布置的作业都没完成,就简单去去实现下,还记得下午的写的联网的一个asnc——http框架的实现..........现在大多数APP,都在用大量的框架实现,不容置疑这样是提高了开发速度,但是新手 也会走上歪路,不断去用开源框架,其原理都不知道。 我们要做的就是下图:

小新我呢,写这篇文章的时候 2014.11.2.上图的效果 你用框架可以很简单的实现,Android-ViewPagerIndicator   我赶上了安卓的末班车,现在世界是浮躁的,做开发的有几个能静下心的写下博客呢,所以既然静下心了,那就好好的做点有意义的事吧。

雄起吧,骚年~~~~~

大家看到这个效果是不是觉得,卧槽,这么高级的东西,感觉很难搞啊,说实话我也做不出这么美观的东西,因为我没有美工...............

首先呢 这个布局  你可以看 首先相对布局,        ------思考时间------------ 然后呢 右边应该是一个button组建 功能 滑动左边的标题------------思考时间---------------

能够滑动的东西 除了ScrollView 还有谁呢,正好里面有个  HorizontalScrollView   里面镶嵌一个线性布局 填充GridView

<RelativeLayoutandroid:id="@+id/categorybar_layout"android:layout_width="match_parent"android:layout_height="wrap_content"android:layout_marginTop="-18.0dip"android:background="@drawable/categorybar_background" ><Buttonandroid:id="@+id/category_arrow_right"android:layout_width="6.0dip"android:layout_height="10.0dip"android:layout_alignParentRight="true"android:layout_centerVertical="true"android:layout_marginLeft="2.0dip"android:layout_marginRight="10.0dip"android:background="@drawable/categorybar_right_arrow" /><HorizontalScrollViewandroid:id="@+id/category_scrollview"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerVertical="true"android:layout_marginLeft="6.0dip"android:layout_toLeftOf="@id/category_arrow_right"android:scrollbars="none" ><LinearLayoutandroid:id="@+id/category_layout"android:layout_width="wrap_content"android:orientation="horizontal"android:layout_height="wrap_content"android:gravity="center_vertical" /></HorizontalScrollView></RelativeLayout>

gridview 我将在main.java 里面填充

因为在代码里只能写PX,所以我用了一个工具类,将PX转换成dp 这也是为了适配考虑 在最后的时候  我会将代码贴出来的,不过代码有点乱,我分开 讲

在代码中 填充gridview

GridView category = new GridView(this);category.setColumnWidth(mColumnWidthDip);// 每個單元格的寬度category.setNumColumns(GridView.AUTO_FIT);// 單元格數目category.setGravity(Gravity.CENTER);// 設置對其方式// 設置單元格選擇是背景色位透明,這樣選擇時就不實現黃色背景category.setSelector(new ColorDrawable(Color.TRANSPARENT));// 根據單元格寬度和數目計算總寬度int width = mColumnWidthDip * categories.size();System.out.println(width);LayoutParams params = new LayoutParams(width, LayoutParams.WRAP_CONTENT);

有了gridview 以后 要填充数据不是,对于标题,最好是从网络获取 然后填充,不过我先放在 res  文件中

String[] categoryArray = getResources().getStringArray(
                R.array.categories);

gridview 我们是需要填充到 线性布局里面去的 gridview 又要填充 数据
 我们先填充gridview的数据吧  不知道大家记不记得 gridview怎么填充数据  --------思考时间--------- 因为是数据是文字 所以 最简单的就是 SimpleAdapter

SimpleAdapter 第一参数是 填充的activity 第二个参数 是一个map集合也是我们要填充的数据 所以呢 只有将数据 用map集合装起来呗

// 獲得新聞分類String[] categoryArray = getResources().getStringArray(R.array.categories);// 把新聞分類保存到List中List<HashMap<String, String>> categories = new ArrayList<HashMap<String, String>>();for (int i = 0; i < categoryArray.length; i++) {HashMap<String, String> hashMap = new HashMap<String, String>();hashMap.put("category_title", categoryArray[i]);categories.add(hashMap);}

第三个参数是要填充的布局, 第四个是个数组,是从map集合中填充到 第五个界面的那个空间里面去

    // 創建Adapter,指明映射字段SimpleAdapter categoryAdapter = new SimpleAdapter(this, categories,R.layout.category_title, new String[] { "category_title" },new int[] { R.id.category_title });

后面 就是将 实例化线性布局 将gridview 填充进来
 最后还有一个 button的功能  添加点击事件,滑动标题

package com.example.SundayNews;import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;import android.app.Activity;
import android.graphics.Color;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.GridView;
import android.widget.HorizontalScrollView;
import android.widget.LinearLayout;
import android.widget.SimpleAdapter;import com.example.SundayNews.utils.DensityUtil;public class MainActivity extends Activity {private final int COLUMNWIDTHPX = 55;private final int FLINGVELOCITYPX = 800;// 滚动距离private int mColumnWidthDip;private int mFlingVelocityDip;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.activity_main);// 吧px转换成dipmColumnWidthDip = DensityUtil.px2dip(this, COLUMNWIDTHPX) + 90;mFlingVelocityDip = DensityUtil.px2dip(this, FLINGVELOCITYPX) + 90;// 獲得新聞分類String[] categoryArray = getResources().getStringArray(R.array.categories);// 把新聞分類保存到List中List<HashMap<String, String>> categories = new ArrayList<HashMap<String, String>>();for (int i = 0; i < categoryArray.length; i++) {HashMap<String, String> hashMap = new HashMap<String, String>();hashMap.put("category_title", categoryArray[i]);categories.add(hashMap);}// 創建Adapter,指明映射字段SimpleAdapter categoryAdapter = new SimpleAdapter(this, categories,R.layout.category_title, new String[] { "category_title" },new int[] { R.id.category_title });GridView category = new GridView(this);category.setColumnWidth(mColumnWidthDip);// 每個單元格的寬度category.setNumColumns(GridView.AUTO_FIT);// 單元格數目category.setGravity(Gravity.CENTER);// 設置對其方式// 設置單元格選擇是背景色位透明,這樣選擇時就不實現黃色背景category.setSelector(new ColorDrawable(Color.TRANSPARENT));// 根據單元格寬度和數目計算總寬度int width = mColumnWidthDip * categories.size();System.out.println(width);LayoutParams params = new LayoutParams(width, LayoutParams.WRAP_CONTENT);// 更新category寬度和高度,這樣category在一行顯示category.setLayoutParams(params);// 設置適配器category.setAdapter(categoryAdapter);// 把category加入到容器中LinearLayout categoryList = (LinearLayout) findViewById(R.id.category_layout);categoryList.addView(category);// 箭头final HorizontalScrollView categoryScrollview = (HorizontalScrollView) findViewById(R.id.category_scrollview);Button categoryArrowRight = (Button) findViewById(R.id.category_arrow_right);categoryArrowRight.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {categoryScrollview.fling(mFlingVelocityDip);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

源码下载

下一篇地址 高仿新闻教程--Gridview的点击事件处理(2)

高仿新闻教程-开源框架的简单实现——网易新闻的标题栏(一)相关推荐

  1. 推荐一个高仿微信的开源项目,有点屌!

    点击蓝色"架构文摘"关注我哟 加个"星标",每天上午 09:25,干货推送! 前言 该项目是一款高仿微信的开源项目,iOSAppTemplate代码重构,基于T ...

  2. GitHub上有个高仿微信的开源项目,超厉害的!

    开发者(KaiFaX) 面向全栈工程师的开发者专注于前端.Java/Python/Go/PHP的技术社区 来源 | GitHub科技 前言 该项目是一款高仿微信的开源项目,iOSAppTemplate ...

  3. android+高仿+日历,Android开源的精美日历控件,热插拔设计的万能自定义UI

    UI框架应该逻辑与界面实现分离,该日历控件使用了热插拔的设计 ,简单几步即可实现你需要的UI效果,热插拔的思想是你提供你的实现,我提供我的插座接口,与自定义Behavior是一样的思想. 听说第一页无 ...

  4. web前端开发常用的10个高端CSS UI开源框架

    随着人们对体验的极致追求,web页面设计也面临着新的挑战,不仅需要更人性化的设计理念,还需要设计出更酷炫的页面.作为web前端开发人员,运用开源资源,更快更好地实现一些现代化的界面,是必备技能之一.下 ...

  5. android 字体慢慢变大 网易新闻,如何在网易新闻中设置字体大小?在网易新闻中设置字体大小的方法...

    大家经常使用网易新闻吧,我们可以在里面查看许多新的消息,下面小编给大家分享一下在网易新闻中设置字体大小的方法,希望会对你有所帮助. 1.打开网易新闻客户端,进入网易新闻主界面后,在主界面中可以看到当天 ...

  6. android通讯录项目_Flutter高仿微信项目开源-具即时通讯IM功能

    项目地址:https://github.com/fluttercandies/wechat_flutter wechat_flutter Flutter版本微信 效果图: 下载体验(Android): ...

  7. 获取macos mojave_高仿MacOS教程

    "潮办公" 关注我们 拥有一台MacBook是很多人的梦想,但是高昂的售价成功逼退了一大波人.MacBook一直以颜值高.轻薄.系统流畅而出名,那么其他的小伙伴们想体验一波苹果系统 ...

  8. 开源版的高仿 “ 微信 ”,吊炸天!

    大家好,今天给大家分享一个高仿微信的开源项目,希望大家喜欢! 前言 该项目是一款高仿微信的开源项目,iOSAppTemplate代码重构,基于TLKit. ZZFLEX实现. 已实现的功能 1. 消息 ...

  9. 推荐一个高仿微信的项目 有点屌!!

    点击上方"小强的进阶之路",选择"星标"公众号 优质文章,及时送达 预计阅读时间: 分钟 1 前言 该项目是一款高仿微信的开源项目,iOSAppTemplate ...

最新文章

  1. mark一下总是记混的重定向与转发的区别
  2. jforum oracle报错,JForum安装在Oracle数据库上
  3. iOS安全攻防(三):使用Reveal分析他人app
  4. JS和JQUERY的区别
  5. Linux下源码安装CodeBlocks
  6. Apache https服务器配置笔记
  7. 为什么嵌入式工程师会对8位MCU有误解?
  8. Mongodb千万级数据在python下的综合压力测试及应用探讨
  9. 区分关联、依赖和聚集关系
  10. 20165329 学习基础和c语言调查
  11. JAVA运算的类型兼容原则_Java基础语法回顾(一)
  12. mock数据和代码生成
  13. list是否包含字符串_Python创建list
  14. Thinkpadt450 win7下面禁用触摸板
  15. Kinect体感游戏开发思考
  16. 解决 VMWare 15.5.5 安装 CentOS 7 出现大小写混乱问题
  17. 2022-2027年中国农村小额贷款行业市场调研及未来发展趋势预测报告
  18. Java基础案例:查找水仙花数(for循环)详解
  19. CSS3实现实时时间数字滚动
  20. 【Tools】Linux远程连接工具(Xshell6)

热门文章

  1. 蓝桥杯嵌入式AD采样解析
  2. 揭秘TVS管是否能替代稳压二极管吗?
  3. 你吸烟吗......
  4. bug系列(二)release版本DLL报错,debug版本正常
  5. 监听器——Listener(简述、自定义监听器) 略,过滤器与拦截器
  6. Solving 3D Inverse Problems using Pre-trained 2D Diffusion Models
  7. 泊松融合实现图片拼接
  8. 全球与中国液体壁纸行业需求趋势及投资策略分析报告2022-2028年
  9. 云计算应用越来越广泛,云计算用户需要注意的主要趋势有哪些?
  10. 【Zigbee】解密Zigbee地址分配——你需要知道的一切