ViewPager(含代替gallery)

ViewPager代替Gallery效果,gallery弊端在于滑动的时候

ViewPager item需要一个布局Layout;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
public class NearbyShopPageLinearLayout extends LinearLayout {
    public NearbyShopPageLinearLayout(final Context context,final AroundShop shop) {
        super(context);
        LayoutInflater inflater = (LayoutInflater) context
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View inflate = inflater.inflate(R.layout.shop_around_item, this, true);
        if (BaseApp.getInstance().canLoadPic()) {
            String trimImageUrl = BitmapUtils.trimImageUrl(shop.getImg_url(),
                    200);
            Constans.imageLoader.displayImage(trimImageUrl,
                    (ImageView) inflate.findViewById(R.id.iv_aroud_shop),
                    Constans.options);
        } else {
            ((ImageView) inflate.findViewById(R.id.iv_aroud_shop))
                    .setImageResource(R.drawable.ic_stub);
        }
        ((TextView) inflate.findViewById(R.id.tv_shop_name)).setText(shop
                .getShop_name());
        this.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                int shopId = shop.getShop_id();
                Intent it = new Intent();
                it.putExtra(IntentKeys.SHOP_ID, shopId);
                it.setClass(context, ShopDetailActivity.class);
                context.startActivity(it);
            }
        });
    }
}

需要再设置一个PagerAdapter

class ImageNearbyAdapter extends PagerAdapter {

        @Override
        public float getPageWidth(int position) {
            // TODO Auto-generated method stub
            return (float) 0.3; //这个属性用来控制一面显示多少个item,默认是1,这个属性和weight差不多每个item占的比例
        }
        @Override
        public void destroyItem(ViewGroup container, int position, Object object) {
            // TODO Auto-generated method stub
            ((ViewPager) container).removeView(mNearbyPageArr.get(position));//滑动的时候释放layout
        }
        @Override
        public Object instantiateItem(ViewGroup container, int position) {
            // TODO Auto-generated method stub
            ((ViewPager) container).addView(mNearbyPageArr.get(position), 0);
            return mNearbyPageArr.get(position);//viewpager添加item
        }
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return mNearbyPageArr.size();//item个数
        }
        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
            // TODO Auto-generated method stub
            return arg0 == arg1; //对象是否一样
        }
    }

//其中 初始化 设置viewpager 和adapter

ViewPager pager = (ViewPager) findViewById(R.id.viewpager11);
        mNearbyPageArr = new ArrayList<NearbyShopPageLinearLayout>();
        for (int i = 0; i < around.size(); i++) {
            NearbyShopPageLinearLayout nspLL = new NearbyShopPageLinearLayout(
                    ShopDetailActivity.this, around.get(i));
            mNearbyPageArr.add(nspLL);
            // ImageView imageView = new ImageView(ShopDetailActivity.this);
            // imageView.setBackgroundResource(R.drawable.ic_error);
            // mNearbyPageArr2.add(imageView);
        }
        ImageNearbyAdapter inAdapter = new ImageNearbyAdapter();
        pager.setAdapter(inAdapter);
        pager.setOffscreenPageLimit(5);
        pager.setPageMargin(10);

xml中的配置如下:

<android.support.v4.view.ViewPager
                    android:id="@+id/viewpager11"
                    android:background="#FFFFFF"
                    android:layout_weight="1"
                    android:layout_width="fill_parent"
                    android:layout_height="120dp"
                    android:layout_marginLeft="10dp"
                    android:layout_marginRight="10dp"
                    android:layout_marginTop="12dp"
                    android:fadingEdge="none"
                    android:clipChildren="false" />


ViewPager(含代替gallery),布布扣,bubuko.com

时间: 2024-12-28 17:57:54

ViewPager(含代替gallery)的相关文章

三行代码接入,社交软件打字时底下弹出的表情布局,自定义ViewPager+页面点标+各种功能的android小框架。

(转载请声明出处:http://www.cnblogs.com/linguanh/) 前言: 接上次分享的 ListView 动态加载类,入口:http://www.cnblogs.com/linguanh/p/4645115.html  这次分享给大家的是,刚些写好的类似社交软件打字时地下弹出的表情布局. 先看下我的默认效果图. 该效果图里面使用的图片资源,是默认的IC_lanucher,在我的类里面,你可以自定义,包括布局,几行几列,什么的,都可以自定义.底下的是小点标. 下集预告:我将在使

(1)项目前言

1.深入理解Java的3大特性,封装.继承.多态 2.回调是一个最基本的设计模式,回调其实不难,其实如果你真正把观察者模式弄透彻的话,回调你看起来就特别特别简单了,一样的道理! 在Android里面你想写出一个高质量的代码,回调是一个最基本的东西. 比如你会经常去写callback,其实我跟大家分享一下最本质的东西(这个现在先简单说一下,项目中大量用到) 你会定义一个class A,你也会去定义一个class B,因为回调嘛,肯定是需要类和类进行交互 回调是什么呢,比如说我class A想去调用

android-UI组件(四):AdapterView及其子类

http://blog.csdn.net/litianpenghaha/article/details/23270881 AdapterView组件是一组重要的组件,AdapterView本身是一个抽象基类,它派生的子类在用法上十分相似,知识显示界面有些不同, 下面是AdapterView及其子类的继承关系类图: 从AdapterView派生出的三个子类:AdsListView.AdsSpinner.AdapterViewAnimator,这3个子类依然是抽象的,实际运用时需要它们的子类. 1.

Android零基础入门第46节:下拉框Spinner

上一期学习了GridView的使用,你已经掌握了吗?本期一起来学习Spinner的使用. 一.认识Spinner Spinner其实就是一个列表选择框.不过Android的列表选择框并不需要显示下拉列表,而是相当于弹出一个菜单供用户选择. Spinner 与 Gallery 都继承了AbsSpinner,AbsSpinner 继承了AdapterView,因此它也表现出AdapterView的特征:只要为AdapterView提供Adapter即可. Spinner支持的常用XML属性及相关方法

处女男学Android(十一)---Gallery、ViewPager和ViewPager+Fragment实现的Tab导航

一.前言 有阵子没更新博客了,主要是最近公司接了个P2P的金融借贷项目没人做,被拉去写服务端,所以迟迟没时间继续学习大安卓,想了想自己的安卓水平和公司的专业安卓璟博比起来依旧差距挺大,于是乎我要加把劲赶上才行,所以继续翻开李刚疯狂讲义系列,看到Gallery这个控件了,大致功能是横向滚动查看列表项,再仔细看了一下居然过时了,官方推荐用ViewPager来替代,还没学就过时了,有点不爽,干脆新的旧的一起学习一下,也好进行一下比较吧.废话不多说,首先是已经过时的Gallery. 二.画廊视图Gall

Android 开源项目android-open-project解析之(一) ListView,ActionBar,Menu,ViewPager,Gallery

一.ListView android-pulltorefresh 一个强大的拉动刷新开源项目,支持各种控件下拉刷新,ListView.ViewPager.WebView.ExpandableListView.GridView.ScrollView.Horizontal ScrollView.Fragment上下左右拉动刷新,比下面johannilsson那个只支持ListView的强大的多.并且它实现的下拉刷新ListView在item不足一屏情况下也不会显示刷新提示,体验更好. 项目地址:ht

Gallery实现ViewPager的页面切换效果、以及实现图片画廊效果

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

Android - ViewPager实现Gallery效果

RelativeLayout viewPagerContainer = (RelativeLayout) headerView.findViewById(R.id.content_pager_layout); imgPager = (ViewPagerFixed) headerView.findViewById(R.id.content_VP); imgPager.setPageMargin(10); pagerAdapter = new MyPagerAdapter(); pagerAdapt

ViewPager 仿 Gallery效果

xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:clipChildren="false"> <android.support.v4.view.