实用的viewpager模板

这是一个简单的效果图:

主要布局文件有:

最主要的是:

/客户端/res/layout/activity_main.xml,其他的布局自己安排就可以了

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <RelativeLayout
        android:id="@+id/topBar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/bg_topbar" >

        <ImageButton
            android:id="@+id/back"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_centerVertical="true"
            android:src="@drawable/back" />

        <ImageButton
            android:id="@+id/mark"
            android:layout_width="28dp"
            android:layout_height="28dp"
            android:layout_alignParentRight="true"
            android:layout_centerVertical="true"
            android:layout_marginRight="10dp"
            android:background="@drawable/mark" />

        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_centerInParent="true"
            android:text="@string/app_name"
            android:textColor="#ffffffff"
            android:textSize="18sp" />
    </RelativeLayout>

    <LinearLayout
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:background="#ffeeeeee" >

        <TextView
            android:id="@+id/tvTag1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="首页"
            android:textColor="#ff000000"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/tvTag2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="商品"
            android:textColor="#ff000000"
            android:textSize="20sp" />

        <TextView
            android:id="@+id/tvTag3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:text="评论"
            android:textColor="#ff000000"
            android:textSize="20sp" />
    </LinearLayout>

    <ImageView
        android:id="@+id/ivCursor"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:scaleType="matrix"
        android:src="@drawable/cursor" />

    <android.support.v4.view.ViewPager
        android:id="@+id/vpViewPager1"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    </android.support.v4.view.ViewPager>

</LinearLayout> 
 public class MainActivity extends Activity implements OnClickListener {

    private ViewPager vpViewPager = null;
    private List<View> views = null;

    private int offset; // 间隔
    private int cursorWidth; // 游标的长度
    private int originalIndex = 0;
    private ImageView cursor = null;
    private ImageButton mark = null;
    private ImageButton back = null;
    private Animation animation = null;
    private boolean IsMark=false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.activity_main);

        ((ImageButton) findViewById(R.id.back)).setOnClickListener(this);
        ((ImageButton) findViewById(R.id.mark)).setOnClickListener(this);

        mark = (ImageButton) findViewById(R.id.mark);
        back = (ImageButton) findViewById(R.id.back);

        ((TextView) findViewById(R.id.tvTag1)).setOnClickListener(this);
        ((TextView) findViewById(R.id.tvTag2)).setOnClickListener(this);
        ((TextView) findViewById(R.id.tvTag3)).setOnClickListener(this);

        views = new ArrayList<View>();
        views.add(LayoutInflater.from(this).inflate(R.layout.index_fragment,
                null));
        views.add(LayoutInflater.from(this).inflate(R.layout.goods_fragment,
                null));
        views.add(LayoutInflater.from(this).inflate(R.layout.comment_fragment,
                null));

        vpViewPager = (ViewPager) findViewById(R.id.vpViewPager1);

        vpViewPager.setAdapter(new MyPagerAdapter(views));
        vpViewPager.setOnPageChangeListener(new MyOnPageChangeListener());

        initCursor(views.size());

        MyPagerAdapter myPagerAdapter = (MyPagerAdapter) vpViewPager
                .getAdapter();
        View v1 = myPagerAdapter.getItemAtPosition(0);
        View v2 = myPagerAdapter.getItemAtPosition(1);
        View v3 = myPagerAdapter.getItemAtPosition(2);

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
        case R.id.tvTag1:
            vpViewPager.setCurrentItem(0);
            break;
        case R.id.tvTag2:
            vpViewPager.setCurrentItem(1);
            break;
        case R.id.tvTag3:
            vpViewPager.setCurrentItem(2);
            break;
        case R.id.back:
            break;

        case R.id.mark:
            if(IsMark==false){
            mark.setImageResource(R.drawable.mark_success);
            Toast.makeText(this, "收藏成功", 0).show();
            IsMark=true;
            }
            break;
        }
    }

    /**
     * 根据tag的数量初始化游标的位置
     *
     * @param tagNum
     */
    public void initCursor(int tagNum) {
        cursorWidth = BitmapFactory.decodeResource(getResources(),
                R.drawable.cursor).getWidth();
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        offset = ((dm.widthPixels / tagNum) - cursorWidth) / 2;

        cursor = (ImageView) findViewById(R.id.ivCursor);
        Matrix matrix = new Matrix();
        matrix.setTranslate(offset, 0);
        cursor.setImageMatrix(matrix);
    }

    class MyOnPageChangeListener implements OnPageChangeListener {
        @Override
        public void onPageSelected(int arg0) {
            int one = 2 * offset + cursorWidth;
            int two = one * 2;

            switch (originalIndex) {
            case 0:
                if (arg0 == 1) {
                    animation = new TranslateAnimation(0, one, 0, 0);
                }
                if (arg0 == 2) {
                    animation = new TranslateAnimation(0, two, 0, 0);
                }
                break;
            case 1:
                if (arg0 == 0) {
                    animation = new TranslateAnimation(one, 0, 0, 0);
                }
                if (arg0 == 2) {
                    animation = new TranslateAnimation(one, two, 0, 0);
                }
                break;
            case 2:
                if (arg0 == 1) {
                    animation = new TranslateAnimation(two, one, 0, 0);
                }
                if (arg0 == 0) {
                    animation = new TranslateAnimation(two, 0, 0, 0);
                }
                break;
            }
            animation.setFillAfter(true);
            animation.setDuration(300);
            cursor.startAnimation(animation);

            originalIndex = arg0;
        }

        @Override
        public void onPageScrolled(int arg0, float arg1, int arg2) {

        }

        @Override
        public void onPageScrollStateChanged(int arg0) {

        }

    }

}
public class MyPagerAdapter extends PagerAdapter {

    private List<View> views;

    public MyPagerAdapter(List<View> views) {
        this.views = views;
    }

    @Override
    public int getCount() {
        return views.size();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        return arg0 == arg1;
    }

    @Override
    public void destroyItem(View container, int position, Object object) {
        // 将指定的view从viewPager中移除
        ((ViewPager) container).removeView(views.get(position));
    }

    @Override
    public Object instantiateItem(View container, int position) {
        // 将view添加到viewPager中
        ((ViewPager) container).addView(views.get(position));
        return views.get(position);
    }

    public View getItemAtPosition(int position) {
        return views.get(position);
    }

}  

虽然是个小Demo,但是如果需要可以找我要全部源码。

来自为知笔记(Wiz)

实用的viewpager模板

时间: 2024-09-14 19:36:31

实用的viewpager模板的相关文章

打造Android 最实用的ViewPager 指示器控件

为什么我说它是最实用的 ViewPager 指示器控件呢? 它有以下几个特点: 1.通过自定义 View 来实现,代码简单易懂: 2.使用起来非常方便: 3.通用性高,大部分涉及到 ViewPager 指示器的地方都能使用此控件: 4.实现了两种指示器效果(具体请看效果图) 一.先来看效果图 传统版指示器的效果图: 流行版指示器的效果 二.分析 如果单纯的要实现此功能,相信,大家都能实现,而我也不会拿出来这里讲了,这里我是要把它打造成一个控件,通俗一点讲就是,在以后可以直接拿来用,而不需要修改代

6个Web前端值得收藏很实用的菜单模板(上)

1.  CSS3实现黑色带图标导航 源码下载/  在线演示 2.  jquery商城红色分类导航 源码下载/  在线演示 3.商城左侧分类jquery菜单 jquery实现的,会在当鼠标光标移动到接近(或通过)视口(viewport)的顶部的时候触发. 源码下载/   在线演示 6个Web前端值得收藏很实用的菜单模板(上)

6个Web前端值得收藏很实用的菜单模板(下)

4. jquery树型可收缩导航菜单 能在支持 FireFox.Chrome.Safari.傲游.搜狗.360浏览器. 源码下载 /   在线演示 5.  jQuery悬浮导航插件stickUp 源码下载/   在线演示 6. jQuery水晶样式下拉导航 源码下载/   在线演示 6个Web前端值得收藏很实用的菜单模板(下)

Spring Boot 揭秘与实战(七) 实用技术篇 - FreeMarker 模板引擎

文章目录 1. FreeMaker 代替 JSP 作为页面渲染 2. 生成静态文件 3. 扩展阅读 4. 源代码 Spring Boot 提供了很多模板引擎的支持,例如 FreeMarker.Thymeleaf.这篇,我们看下 Spring Boot 如何集成和使用 FreeMarker. Spring Boot 中使用 FreeMarker 模板非常简单方便.如果想要使用FreeMarker 模板引擎,首先,修改 POM 文件,添加依赖. FreeMaker 代替 JSP 作为页面渲染 <de

实用的viewpager 做一个引导动画(强调方法没有美化)

思路: 1.利用viewpager控件自带的水平滚动特性,将想要展现的内容用xml布局文件一张张写出来 2.用一个linearlayout包裹张数个imageview,src是一个小圆点,另外准备一个大圆点,给imageview定义一个索引值 3.首先进入动画时第一个原点是大的,进入第二张是将第一张的还原,第二章变大,这里我是用style样式setenabled方法来实现的 这个页面在应用还在加载时调用,负责判断是去引导页面还是直接去主页,如果首次进入或重新安装了此应用都将去往引导页面 <?xm

ViewPager页面滑动切换

我们日常生活中用到的微博,QQ,微信等app在进行页面左右滑动的时候,很多都可以用ViewPager来实现.可以说,ViewPager在android开发中十分常见并且特别实用. Viewpager在android.support.v4.view这个软件包中,  android.support.v4.view.jar是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.所以低版本开发时必须加入android-support-v4.jar,并且在XM

2014年最全的ANDROID GUI模板和线框图免费下载

距离上次分享GUI模板有很长时间了,这段时间里设计趋势不断变化,谷歌推出了最新的Android L以及全新的界面设计,UI设计师又有得忙了,今天收集了一组实用的GUI模板和线框图,包含最新的Android4.4,Material Design,Android 可穿戴设备等等,控件全面,拿来即用,建议收藏待用呦. Android UI XHDPI Template(Sketch) Android UI Design Kit 4.4 (PSD) Android GUI Template (Sketc

大量多风格多功能后台管理模板

最近在做网站后台,在网上找了大量的后台的模版,觉得还不错,拿出来给大家分享一哈.... 1.     点击下载 多风格多功能后台管理模板 2.   点击下载 专业银行结算系统后台模板 3.   点击下载 超漂亮的电子商务管理平台模板 4.    点击下载 dedecms绿色后台html版 5.    点击下载 一款不错的网络办公系统登录页面 6.    点击下载 网站管理系统后台模板 7.    点击下载 汽车美容连锁网站管理系统模板 8.    点击下载 网站后台管理系统模板 9.    点击

android ViewPager页面左右滑动切换

我们日常生活中用到的微博,QQ,微信等app在进行页面左右滑动的时候,很多都可以用ViewPager来实现.可以说,ViewPager在android开发中十分常见并且特别实用. Viewpager在android.support.v4.view这个软件包中, android.support.v4.view.jar是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.所以低版本开发时必须加入android-support-v4.jar,并且在XML