android 广告栏 viewpager

activity_main.xml


   
	   
	       
	    
			
			       
			     
	   
   

point_focusl.xml



    
	

point_nomal.xml



    
	

point_bg.xml



    



以上是布局代码,接下来是类和方法实现viewPager的图片展示效果

此处注意的是   广告栏的布局样式分为三个细节(图片展示)(文字描述)(圆点跟踪)

MainActivity.java

package com.guyu.advertisement;

import java.util.ArrayList;

import android.app.Activity;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity 
{

	private ViewPager 	viewPager;
	private LinearLayout pointGroup;
	private TextView imageDes;
	
	//1.首先获取图片的资源ID  imageIds 

	private final int[] imageIds = 
		{
			R.drawable.cc,
			R.drawable.ff,
			R.drawable.pp,
			R.drawable.qq,
			R.drawable.vv,
			R.drawable.ic_launcher
			}; 
//2 获得文字的资源imageDescriptions 

	private final String[] imageDescriptions =
		{
			 "你电脑等你一覅",
			"能促进妇女军方均能的",
			"你发发你的我繁荣奇偶等你菲菲姐聂风你年经济法凝聚 你的呢 ",
			"衡水市你那",
			"能减肥的存储",
			"sdddjdfv"
		};
	
	
	
	
	private ArrayList imageList;
	//上一个页面
		private int lastPointPosition;
	
				protected void onCreate(Bundle savedInstanceState) 
				{
					super.onCreate(savedInstanceState);
					setContentView(R.layout.activity_main);
					viewPager = (ViewPager) findViewById(R.id.viewPager);
					pointGroup = (LinearLayout) findViewById(R.id.point_group);
					imageDes = (TextView) findViewById(R.id.msg);	
					// 2 刚出来设置为第一条内容
					imageDes.setText(imageDescriptions[0]);			
		
					imageList = new ArrayList();
					for( int i= 0;i 					//1.初始化图片资源 将图片添加到imageList中
						ImageView image = new ImageView(this);
						image.setBackgroundResource(imageIds[i]); 
						imageList.add(image);
						
						// 3 添加指示点
					ImageView point = new ImageView(this);
					
				//设置点的布局	LinearLayout.LayoutParams Params = new LinearLayout.LayoutParams(5,5);
						Params.rightMargin = 20;
						point.setLayoutParams(Params);
						
						
						point.setBackgroundResource(R.drawable.point_bg);
						point.setEnabled(false);
						if(i == 0)
						{
							point.setEnabled(true);
						}
						else {
							point.setEnabled(false);
						}
						pointGroup.addView(point);
					}
					
					//1 设置适配器(一个位置给一个view) 这样就完成了一个简单的图片滑动展示,接//下来是完成 2图片描述
					viewPager.setAdapter(new MyPagerAdapter());
					
		// 2 添加一个事件监听  (监听页面的变化,实现文字描述也随之改变)
		//2 setOnPageChangeListener()  里面有三个方法,第一个比较常用

						viewPager.setOnPageChangeListener(new OnPageChangeListener()
						{
							/* 2 页面切换后调用
							 *   position  新的页面位置
							 * */
							public void onPageSelected(int position) 
							{
								// 2 设置文字描述
								imageDes.setText(imageDescriptions[position]);
								
								/* 3 改变指示点状态
								 *   把当前点enbale 为true
								 * */
								pointGroup.getChildAt(position).setEnabled(true);
								/*把上一个点设为flase*/
								pointGroup.getChildAt(lastPointPosition).setEnabled(false);
								
							lastPointPosition  = position ;
							}
							
							
							/*页面不断滑动的时候,回调   (不常用)
							 * 
							 * */
							public void onPageScrolled(int position, float positionOffset,int positionOffsetPixels)
							{
								
								
							}
							
							/*当页面状态发生改变的时候,回调  (不常用)
							 * 
							 * */
							public void onPageScrollStateChanged(int state) 
							{
							
								
							}
						});
						
				}
//1.定义适配器继承PagerAdapter   这里有四个方法需要实现
			private class MyPagerAdapter extends PagerAdapter
			{
				@Override
			/*获得页面的总数
			 * */
				public int getCount() 
				{
					return imageList.size();
				}
				
				/*获得相应位置的view
				 * container view的容器,其实就是viewpager本身
				 * position 相应的位置
				 * */
				@Override
				public Object instantiateItem(ViewGroup container, int position) 
				{
					//给container添加view
					container.addView(imageList.get(position));
					return imageList.get(position);
				}
			
				
				/*判断view和object的对应关系*/
				public boolean isViewFromObject(View view, Object object) 
				{
					return	  view ==object;
					
					
				}
				
				
				/**
				 * 销毁对应位置上的object  (在滑动图片时候viewPager只会生成前后相邻的view,同时会杀死其余的view)
				 */
				public void destroyItem(ViewGroup container, int position, Object object) {
					System.out.println("destroyItem  ::"+position);
					
					container.removeView((View) object);
					object = null;
				}
			}



}





你可能感兴趣的:(android)