Android HorizontalScrollView结合GridView实现类似网易新闻那样的栏目滑动效果
2013-06-05 16:15
891 查看
今天无聊想实现一下网易新闻中栏目滑动的效果,想到了用HorizontalScrollView结合GridView来实现基础的功能:
最重要首先是的是布局:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="10dip" android:background="@drawable/category_background" > <Button android:id="@+id/right" android:layout_width="32dip" android:layout_height="40dip" android:layout_alignParentRight="true" android:background="@drawable/category_array_right" /> <HorizontalScrollView android:id="@+id/category_scrollview" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_centerVertical="true" android:layout_marginLeft="6dip" android:layout_toLeftOf="@id/right" android:scrollbars="none" > <LinearLayout android:id="@+id/category_layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center_vertical" > </LinearLayout> </HorizontalScrollView> </RelativeLayout>
然后是实现类,我尽可能的写好了注释:
package com.example.horizontalscrollview; import java.util.ArrayList; import java.util.List; import android.os.Bundle; import android.annotation.SuppressLint; import android.app.ActionBar.LayoutParams; import android.app.Activity; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.util.DisplayMetrics; import android.view.Gravity; import android.view.Menu; import android.view.View; import android.view.View.OnClickListener; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemSelectedListener; import android.widget.Button; import android.widget.GridView; import android.widget.HorizontalScrollView; import android.widget.LinearLayout; import android.widget.SimpleAdapter; import android.widget.TextView; @SuppressLint("NewApi") public class MainActivity extends Activity { private HorizontalScrollView horizontalScrollView; private Button right; private List<String> array; private TitleAdapter titleAdapter; private int COLUMNWIDTH = 75; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // 栏目内容存放的数组 array = new ArrayList<String>(); array.add("tab1"); array.add("tab2"); array.add("tab3"); array.add("tab4"); array.add("tab5"); array.add("tab6"); array.add("tab7"); // 最简单的一个适配器,里面就一个TextView titleAdapter = new TitleAdapter(getApplicationContext(), array); // 新建一个GridView GridView category = new GridView(getApplicationContext()); // 设置内部子栏目的宽度 category.setColumnWidth(COLUMNWIDTH); // 设置内部子栏目个数为自动适应 category.setNumColumns(GridView.AUTO_FIT); // 设置Gravity为Center category.setGravity(Gravity.CENTER); // 设置Selector为透明 category.setSelector(new ColorDrawable(Color.TRANSPARENT)); int width = COLUMNWIDTH * array.size(); LayoutParams layoutParams = new LayoutParams(width, LayoutParams.WRAP_CONTENT); // 设置GridView的LayoutParams为子栏目的宽度乘以栏目个数 category.setLayoutParams(layoutParams); // 设置适配器 category.setAdapter(titleAdapter); LinearLayout categoryLayout = (LinearLayout) findViewById(R.id.category_layout); // 将新建的GridView添加到布局中 categoryLayout.addView(category); // 设置GridView的点击事件 category.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { System.out.println("选中了" + arg2); TextView categoryTitle; // 每次都循环的将子栏目的颜色和背景还原 for (int i = 0; i < arg0.getCount(); i++) { categoryTitle = (TextView) arg0.getChildAt(i); categoryTitle.setTextColor(0XFFADB2AD); categoryTitle.setBackgroundDrawable(null); } // 设置点击的栏目的文字颜色和背景图片 categoryTitle = (TextView) arg1; categoryTitle.setTextColor(0XFFFFFFFF); categoryTitle .setBackgroundResource(R.drawable.categorybar_item_background); } }); horizontalScrollView = (HorizontalScrollView) findViewById(R.id.category_scrollview); right = (Button) findViewById(R.id.right); // 点击右边的滑动按钮可以让horizontalScrollView滑动 right.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { horizontalScrollView.fling(550); } }); } }打完收工。
想添加附件,不知道在哪里添加!!fuck
http://download.csdn.net/detail/xujinyang1234/5524299
相关文章推荐
- android 仿网易新闻滑动tab栏,HorizontalScrollView和rediogroup实现
- Android 实现横向标题栏滚动效果(HorizontalScrollView + GridView + Viewpager + 自定义适配器)
- Android 中的用HorizontalScrollView布局实现类似Gallery效果
- 实现android左右滑动效果:ViewFlipper、ViewPager、HorizontalScrollView
- android之TabLayout实现PagerSlidingTabStrip,ViewpagerIndicator之类的效果滑动页面导航效果(类似网易新闻)
- android开发之&使用ViewPager加gridView实现菜单按钮分页滑动(类似QQ表情选择翻页效果)
- 【Android实战】HorizontalScrollView实现可滑动GridView
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android 继承framelayout,实现ScrollView 和 HorizontalScrollView 的效果
- Android 自定义 HorizontalScrollView 打造多图片OOM 的横向滑动效果(实例代码)
- Android ViewPager+HorizontalScrollView实现标题栏滑动(腾讯新闻)
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android实现类似网易新闻选项卡动态滑动效果
- Android 自定义View结合自定义TabLayout实现顶部标签滑动效果
- Android 自定义View修炼-自定义HorizontalScrollView视图实现仿ViewPager效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果
- Android 用HorizontalScrollView实现ListView的Item滑动删除
- Android ScrollView HorizontalScrollView 实现全方向(上下左右)反弹效果
- Android 自定义 HorizontalScrollView 打造再多图片(控件)也不怕 OOM 的横向滑动效果