`
longgangbai
  • 浏览: 7341119 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android4.0扩展库实现左右滑动效果(一)

 
阅读更多

  在手机的桌面实现三屏页面滑动显示方式实现如下:

 

注意长方形中的图表变化

 

 

 

 

 

 

主要的布局文件如下:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <android.support.v4.view.ViewPager
        android:id="@+id/guidePages"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"/>
       
    <RelativeLayout  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:orientation="vertical" >
    <LinearLayout  
        android:id="@+id/viewGroup"  
        android:layout_width="fill_parent"  
        android:layout_height="wrap_content"  
        android:layout_alignParentBottom="true"  
        android:layout_marginBottom="30dp"  
        android:gravity="center_horizontal"  
        android:orientation="horizontal" >  
    </LinearLayout>  
    </RelativeLayout>

</FrameLayout>

 

 

主要的代码文件如下:

package com.easyway.guide;

import android.app.Activity;
import android.os.Bundle;


import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.Window;
import android.widget.ImageView;
/**
 * 使用Android-suport-v4.jar中android的扩展功能ViewPager实现左右滑动的切换的功能
 * 此种功能在智能机的桌面应用中多屏信息的展示中使用
 * 
 * @Title: 
 * @Description: 实现TODO
 * @Copyright:Copyright (c) 2011
 * @Company:易程科技股份有限公司
 * @Date:2012-7-16
 * @author  longgangbai
 * @version 1.0
 */
public class AndroidGuideViewActivityActivity extends Activity {
		
	    private ViewPager viewPager;  
	    private ArrayList<View> pageViews;  
	    private ViewGroup main, group;  
	    private ImageView imageView;  
	    private ImageView[] imageViews; 
		
	    /** Called when the activity is first created. */
	    @Override
	    public void onCreate(Bundle savedInstanceState) {
	        super.onCreate(savedInstanceState);
	        this.requestWindowFeature(Window.FEATURE_NO_TITLE);
	        //获取页面的布局
	        LayoutInflater inflater = getLayoutInflater();  
	        pageViews = new ArrayList<View>();  
	        pageViews.add(inflater.inflate(R.layout.list_item0, null));  
	        pageViews.add(inflater.inflate(R.layout.list_item1, null));  
	        pageViews.add(inflater.inflate(R.layout.list_item2, null));  
	        pageViews.add(inflater.inflate(R.layout.list_item3, null));   
	  
	        imageViews = new ImageView[pageViews.size()];
	        //获取相关的容器
	        main = (ViewGroup)inflater.inflate(R.layout.main, null);  
	        
	        // group是R.layou.main中的负责包裹小圆点的LinearLayout.  
	        group = (ViewGroup)main.findViewById(R.id.viewGroup);  
	       //获取ViewPager对象
	        viewPager = (ViewPager)main.findViewById(R.id.guidePages);  
	  
	        //创建相关的ImageView对象并添加对象
	        for (int i = 0; i < pageViews.size(); i++) {  
	            imageView = new ImageView(AndroidGuideViewActivityActivity.this);  
	            imageView.setLayoutParams(new LayoutParams(20,20));  
	            imageView.setPadding(20, 0, 20, 0);  
	            imageViews[i] = imageView;  
	            if (i == 0) {  
	                //默认选中第一张图片
	                imageViews[i].setBackgroundResource(R.drawable.page_indicator_focused);  
	            } else {  
	                imageViews[i].setBackgroundResource(R.drawable.page_indicator);  
	            }  
	            group.addView(imageViews[i]);  
	        }  
	        //设置布局
	        setContentView(main);  
	       //设置相关的适配器对象
	        viewPager.setAdapter(new GuidePageAdapter());  
	        //设置相关的响应事件
	        viewPager.setOnPageChangeListener(new GuidePageChangeListener());  
	    }
	    
	    /** 指引页面Adapter */
	    class GuidePageAdapter extends PagerAdapter {  
	    	  
	        @Override  
	        public int getCount() {  
	            return pageViews.size();  
	        }  
	  
	        @Override  
	        public boolean isViewFromObject(View arg0, Object arg1) {  
	            return arg0 == arg1;  
	        }  
	  
	        @Override  
	        public int getItemPosition(Object object) {  
	            // TODO Auto-generated method stub  
	            return super.getItemPosition(object);  
	        }  
	  
	        @Override  
	        public void destroyItem(View arg0, int arg1, Object arg2) {  
	            // TODO Auto-generated method stub  
	            ((ViewPager) arg0).removeView(pageViews.get(arg1));  
	        }  
	  
	        @Override  
	        public Object instantiateItem(View arg0, int arg1) {  
	            // TODO Auto-generated method stub  
	            ((ViewPager) arg0).addView(pageViews.get(arg1));  
	            return pageViews.get(arg1);  
	        }  
	  
	        @Override  
	        public void restoreState(Parcelable arg0, ClassLoader arg1) {  
	            // TODO Auto-generated method stub  
	  
	        }  
	  
	        @Override  
	        public Parcelable saveState() {  
	            // TODO Auto-generated method stub  
	            return null;  
	        }  
	  
	        @Override  
	        public void startUpdate(View arg0) {  
	            // TODO Auto-generated method stub  
	  
	        }  
	  
	        @Override  
	        public void finishUpdate(View arg0) {  
	            // TODO Auto-generated method stub  
	  
	        }  
	    } 
	    
	    /** 指引页面改监听器 */
	    class GuidePageChangeListener implements OnPageChangeListener {  
	  
	        @Override  
	        public void onPageScrollStateChanged(int arg0) {  
	            // TODO Auto-generated method stub  
	  
	        }  
	  
	        @Override  
	        public void onPageScrolled(int arg0, float arg1, int arg2) {  
	            // TODO Auto-generated method stub  
	  
	        }  
	  
	        @Override  
	        public void onPageSelected(int arg0) {  
	            for (int i = 0; i < imageViews.length; i++) {  
	                imageViews[arg0]  
	                        .setBackgroundResource(R.drawable.page_indicator_focused);  
	                if (arg0 != i) {  
	                    imageViews[i]  
	                            .setBackgroundResource(R.drawable.page_indicator);  
	                }  
	            }
	  
	        }  
	  
	    }  
    
}

 

分享到:
评论

相关推荐

    仿Android4.0左右滑动切换Tab的UI的源代码.rar

    这个"仿Android4.0左右滑动切换Tab的UI的源代码.rar"提供了实现这一功能的示例代码,名为DWinterTabDemo。在这个项目中,开发者可以学习如何利用Android的Viewpager、Fragment和TabLayout等组件来构建这样的交互式...

    仿Android4.0左右滑动切换Tab的UI的源代码.zip

    1. **ViewPager**: Android中的`ViewPager`组件是实现左右滑动切换页面的核心。它允许用户通过横向滑动来浏览多个页面,每个页面通常对应一个`Fragment`。在Android 4.0(API Level 14)中,`ViewPager`被引入,极大...

    Android应用源码仿4.0左右滑动切换Tab的UI的源代码.zip

    这个源码项目,"Android应用源码仿4.0左右滑动切换Tab的UI的源代码.zip",旨在实现一种类似Android 4.0(Ice Cream Sandwich)系统的Tab切换效果,让用户通过左右滑动来浏览不同的内容区域。这个设计模式在移动应用...

    android 4.0 sdk

    1. **平台框架API**:ICS引入了API级别15,扩展了Android的编程接口,增加了许多新特性,如人脸识别登录、数据同步适配器、新的图形库等。开发者可以利用这些API来实现更高级的功能和更好的用户体验。 2. **Android...

    android4.0switch源码

    3. **动画效果**:`Switch`的滑动动画是由`SwitchCompat`(在AppCompat库中提供,适用于更低版本的Android)的`SwitchDrawable`类实现的。当开关状态改变时,该类会计算出滑动距离并绘制动画。 4. **自定义样式**:...

    最新android4.0gallery3d源码

    Gallery3D是Android系统中一个经典的3D图像浏览应用,尤其在Android 4.0(冰淇淋三明治)版本中,它提供了流畅且富有视觉冲击力的用户体验。这个源码是开发者深入理解Android 3D图像处理、动画效果以及性能优化的...

    Android Launcher4.0工程

    - **Workspace**和**Screen**:抽象出工作区和屏幕的概念,每个屏幕可以看作是一个单独的桌面页,用户可以左右滑动切换。 - **AppWidgetHostView**:承载小部件的视图,与AppWidgetManager协同工作,显示并更新小...

    4.0的gallery3D

    Gallery3D是一款在Android 4.0系统中内置的3D图片浏览应用,它为用户提供了流畅、直观的图像浏览体验,尤其是在高性能设备上,其3D效果尤为突出。这款应用充分利用了硬件加速功能,使得图像的加载与切换更为迅速,为...

    Android-MaterialViewPager一个易于使用的MaterialDesignViewPager库

    ViewPager是Android SDK中的一个关键组件,用于展示多个页面并允许用户通过左右滑动来切换这些页面。在Material Design中,ViewPager经常用于实现卡片式布局,提供流畅的过渡动画和响应式的触摸反馈。`...

    Android最全v4包

    在Android开发中,`android-support-v4`库是Google提供的一款重要的支持库,它使得开发者能够在更低版本的Android系统上实现一些高版本的功能。这个库包含了许多类和接口,为开发者提供了广泛的功能扩展,比如...

    自定义横向listView4.0

    然而,标准的ListView通常是垂直滚动的,而“自定义横向ListView4.0”则打破了这一常规,提供了水平滚动的效果,使得用户可以在水平方向上浏览数据。这种自定义组件在设计时可能涉及到Android布局管理、适配器机制、...

    android-support-design

    **AppCompat_v7库**是支持设计库的基础,它包含了对Android原生主题的扩展,使开发者能够将Material Design风格引入到Android 4.0 (API级别14)及更低版本的应用中。`appcompat_v7`库提供了许多关键组件,如ActionBar...

    android-support-v7-appcompat.jar android-support-v4.jar

    `android-support-v4.jar` 则是另一个广泛使用的库,它包含了大量在Android 4.0(API级别14)及更高版本中可用的功能,但向下兼容到Android 1.6(API级别4)。这个库提供了许多关键服务和组件,如Fragment、Loader、...

    android支持jar包

    3. **ViewPager**:一个可以左右滑动切换页面的视图,常用于实现滑动Tab或图片轮播。 4. **AsyncTask**:简化了短时间后台任务的执行,便于在主线程与后台线程之间进行数据交换。 5. **BroadcastReceiver**、`...

    android-support-v4-v7-v13-v14-v17兼容包

    CardView用于创建具有阴影和圆角效果的卡片式布局,而Design库则提供了滑动返回、悬浮按钮等Material Design设计元素。 `android-support-v13`主要针对API级别13及以上的设备,它提供了一些额外的功能,如...

    android七种tab demo

    Android Support Library中的ViewPager允许用户左右滑动查看多个页面,结合TabLayout可以创建现代风格的Tab。TabLayout会根据ViewPager的数据自动创建Tab,并随页面的切换更新选中状态。这种方式在Android 4.0及...

    Android各种原生UI模板 HoloEverywhere

    通过深入研究这些文件,开发者可以学习到如何创建符合Android设计指南的界面,如何自定义和扩展控件,以及如何实现平滑的过渡和动画效果。此外,HoloEverywhere也支持自定义主题,让开发者可以根据品牌需求调整颜色...

    Android高级应用源码-仿google play侧滑菜单.zip

    “HoloEverywhere”是一个开源库,它扩展了Android的官方支持库,目的是为了让开发者能够方便地在Android 2.1及更高版本上使用Android 3.0(Honeycomb)引入的Holo主题。Holo主题是Android 4.0(Ice Cream Sandwich...

Global site tag (gtag.js) - Google Analytics