`

过期Gallery取代方案horizontalscrollView之菜单导航效果

阅读更多

效果

-------------------------------------------------------------------------------------

素材

-------------------------------------------------------------------------------------

activity_main.xml

-------------------------------------------------------------------------------------

<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="wrap_content"

            android:layout_height="wrap_content"

            android:gravity="center_vertical"  android:orientation="horizontal">

        </LinearLayout>

    </HorizontalScrollView>

 

</RelativeLayout>

 

category_title.xml

-------------------------------------------------------------------------------------

<?xml version="1.0" encoding="utf-8"?>

<TextView xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/category_title"

    android:layout_width="wrap_content"

    android:layout_height="40.0dip"

    android:textSize="15.0sp"

    android:textStyle="bold"

    android:gravity="center"

    android:singleLine="true"

    />

MainActivity.java

-------------------------------------------------------------------------------------

package com.horizontalscrollView04;

import java.util.ArrayList;

import java.util.List;

import android.annotation.SuppressLint;

import android.app.ActionBar.LayoutParams;

import android.app.Activity;

import android.graphics.Color;

import android.graphics.drawable.ColorDrawable;

import android.os.Bundle;

import android.view.Gravity;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.AdapterView;

import android.widget.AdapterView.OnItemClickListener;

import android.widget.Button;

import android.widget.GridView;

import android.widget.HorizontalScrollView;

import android.widget.LinearLayout;

import android.widget.TextView;

/**

 * 

 * 项目名称:com.horizontalscrollView04   

 * 类  名  称:MainActivity   

 * 类  描  述: 滚动导航菜单  

 * 创  建  人:fy   

 * 创建时间:2014-3-23 下午3:23:29   

 * Copyright (c) 方勇-版权所有

 */

@SuppressLint("NewApi")

public class MainActivity extends Activity implements OnItemClickListener, OnClickListener {

 

private HorizontalScrollView horizontalScrollView;

/* 右边更多导航菜单 */

private Button right;

/* 导航菜单集合 */

private List<String> array;

/* 导航菜单适配器 */

private TitleAdapter titleAdapter;

/* 列宽 */

private final int COLUMNWIDTH = 75;

/* 导航菜单布局 */

private GridView category;

/* 导航菜单容器,存放导航菜单布局 */

private LinearLayout categoryLayout;

 

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

findViews();

setListeners();

initViews();

}

 

private void findViews() {

horizontalScrollView = (HorizontalScrollView) findViewById(R.id.category_scrollview);

right = (Button) findViewById(R.id.right);

categoryLayout = (LinearLayout) findViewById(R.id.category_layout);

// 新建一个GridView

category = new GridView(getApplicationContext());

}

 

private void setListeners() {

// 点击右边的滑动按钮可以让horizontalScrollView滑动

right.setOnClickListener(this);

// 设置GridView的点击事件

category.setOnItemClickListener(this);

}

 

    private void initViews() {

// 栏目内容存放的数组

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);

// 设置内部子栏目的宽度

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);

// 将新建的GridView添加到布局中

categoryLayout.addView(category);

}

 

@Override

public void onClick(View v) {

// TODO Auto-generated method stub

horizontalScrollView.fling(550);

}

 

@Override

public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

TextView categoryTitle;

// 每次都循环的将子栏目的颜色和背景还原

for (int i = 0; i < parent.getCount(); i++) {

categoryTitle = (TextView) parent.getChildAt(i);

categoryTitle.setTextColor(0XFFADB2AD);

//categoryTitle.setBackground(null);

}

// 设置点击的栏目的文字颜色和背景图片

categoryTitle = (TextView) view;

categoryTitle.setTextColor(0XFFFFFFFF);

categoryTitle.setBackgroundResource(R.drawable.categorybar_item_background);

}

}

 

TitleAdapter.java

-------------------------------------------------------------------------------------

package com.horizontalscrollView04;

import java.util.List;

import android.content.Context;

import android.view.LayoutInflater;

import android.view.View;

import android.view.ViewGroup;

import android.widget.BaseAdapter;

import android.widget.TextView;

/**

 * 

 * 项目名称:com.horizontalscrollView04   

 * 类  名  称:TitleAdapter   

 * 类  描  述:导航菜单适配器    

 * 创  建  人:fy   

 * 创建时间:2014-3-23 下午3:27:59   

 * Copyright (c) 方勇-版权所有

 */

public class TitleAdapter extends BaseAdapter {

private Context context;

private List<String> titles;

 

public TitleAdapter(Context context, List<String> strings) {

this.context = context;

titles = strings;

}

 

@Override

public int getCount() {

return titles.size();

}

 

@Override

public Object getItem(int position) {

return titles.get(position);

}

 

@Override

public long getItemId(int position) {

return position;

}

 

@Override

public View getView(int position, View convertView, ViewGroup parent) {

convertView = LayoutInflater.from(context).inflate(R.layout.category_title, null);

TextView title = (TextView) convertView.findViewById(R.id.category_title);

title.setText(titles.get(position).toString());

return convertView;

}

 

}

 

  • 大小: 40.1 KB
  • 大小: 40.3 KB
  • 大小: 40.4 KB
  • 大小: 4.6 KB
  • 大小: 6.1 KB
1
1
分享到:
评论

相关推荐

    HorizontalScrollView实现Gallery

    总的来说,HorizontalScrollView实现Gallery的方法是一种复用现有组件并进行定制的方式,它可以帮助开发者在不使用已被弃用的Gallery组件的情况下,实现类似的功能。这不仅有助于保持代码的兼容性,还能利用...

    gallery模拟horizontalscrollview效果

    要模拟`Gallery`的效果,我们可以使用`HorizontalScrollView`或`RecyclerView`。下面分别介绍这两种方法: 1. **使用HorizontalScrollView**: - `HorizontalScrollView`是一个可以容纳单个子视图并支持水平滚动的...

    HorizontalScrollView ViewPager 导航菜单横向左右滑动并和下方的控件实现联动

    总结,通过HorizontalScrollView和ViewPager的巧妙结合,我们可以创建一个具有动态联动效果的横向导航菜单。这个菜单不仅能够提供直观的用户交互,还可以通过适配器灵活地展示多样化的页面内容。在实现过程中,合理...

    导航栏联动效果( HorizontalScrollView+ViewPager)

    在Android开发中,创建动态、交互丰富的用户界面是至关重要的,而"导航栏联动效果(HorizontalScrollView+ViewPager)"正是实现这一目标的一种有效方法。这种技术通常用于电商平台、新闻应用等,提供一种平滑的横向...

    Android 自定义 HorizontalScrollView 打造超强 Gallery效果 完整实例源码

    在这个特定的实例中,我们将探讨如何通过自定义HorizontalScrollView打造一个强大的Gallery效果。 Gallery组件在早期版本的Android API中被广泛用于展示一系列的图片或元素,用户可以左右滑动来浏览。然而,随着...

    Android,自定义HorizontalScrollView,实现分页效果

    在这个主题中,我们将深入探讨如何自定义HorizontalScrollView来达到这样的效果。HorizontalScrollView是Android提供的一个水平方向的滚动视图,允许用户水平滑动查看超出屏幕范围的内容。 首先,我们了解`scrollTo...

    Android,自定义HorizontalScrollView,实现过度滑动时回弹效果

    本文将深入探讨如何自定义一个HorizontalScrollView,以实现当用户过度滑动时的回弹效果,这种效果通常被称为“橡皮筋效果”或“弹性滚动”。在Android系统中,标准的HorizontalScrollView并不直接支持这种边界反馈...

    HorizontalScrollView和ViewPager联动效果

    HorizontalScrollView允许用户水平滚动一个包含多个View的布局,而ViewPager则通常用于实现滑动页面的效果,如在应用的TabLayout下展示多个Fragment。这两者联动可以创建出更加丰富的用户交互体验。 在Android开发...

    Android HorizontalScrollView实现横向Gallery

    然而,Gallery已在Android API Level 17中被弃用,开发者被推荐使用其他替代方案,如RecyclerView或HorizontalScrollView。HorizontalScrollView则是一个更基础的视图容器,它可以容纳一个或者多个水平排列的子视图...

    ViewPager_HorizontalScrollView滚动导航条

    在这个“ViewPager_HorizontalScrollView滚动导航条”案例中,我们将探讨如何将这两种组件结合起来,创建一个动态的、交互式的滚动导航条。 首先,`ViewPager` 是Android SDK中的一个强大的组件,主要用于展示多个...

    android HorizontalScrollView和ViewPager联动效果

    在Android开发中,HorizontalScrollView和ViewPager是两种常用的布局组件,它们各自有特定的功能,并且在某些场景下可以结合使用以实现独特的交互效果。本资源主要探讨了如何将这两个组件联动,尤其是在上下控件间...

    Android自定义HorizontalScrollView打造超强Gallery效果

    自从Gallery被谷歌废弃以后,Google推荐使用ViewPager和HorizontalScrollView来实现Gallery的效果。的确HorizontalScrollView可以实现Gallery的效果,但是HorizontalScrollView存在一个很大的问题,如果你仅是用来...

    自定义HorizontalScrollView实现侧滑菜单

    在Android应用开发中,侧滑菜单(通常称为抽屉式导航)是一种常见的设计模式,它允许用户通过从屏幕边缘向内滑动来显示隐藏的菜单选项。这种效果在许多流行的应用如Google Maps、Facebook等中都有所应用。本文将详细...

    HorizontalScrollView打造的相册效果

    近期看了一堂某在线IT学习的视频公开课,这里就不说名字了,省的有打广告的...讲到了利用HorizontalScrollView仿ViewPager设计的一个简单相册。其实主要用了ViewPager缓存的思想。自已尝试实现了一个,大家可以看一下。

    horizontalscrollView

    这个组件通常用于实现图片轮播、菜单滚动等效果。在这个"horizontalscrollView"项目中,我们将深入探讨如何利用`HorizontalScrollView`来实现图片切换显示的功能。 首先,我们需要了解`HorizontalScrollView`的基本...

    仿QQ侧滑菜单

    QQ侧滑菜单是一种常见的移动应用交互设计,常用于实现应用的主要导航功能,让用户可以方便地在不同的页面或功能之间切换。这种设计灵感来源于QQ早期的Android应用版本,它通过一个可滑动的侧边栏提供了丰富的操作...

    安卓Gallery照片墙画廊图库相关-HorizontalScrollView仿gallery照片墙效果添加监听当前滑动到第几页添加动态添加效果代码简单有需要自己扩展.zip

    HorizontalScrollView仿gallery 照片墙效果,添加监听当前滑动到第几页,添加动态添加效果,代码简单有需要自己扩展.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。

Global site tag (gtag.js) - Google Analytics