當前位置:編程學習大全網 - 源碼下載 - android這樣的效果怎麽實現的,上邊是3張圖片

android這樣的效果怎麽實現的,上邊是3張圖片

這是android中的viewPager中常用的壹種效果

例如APP首次啟動的歡迎界面,通常都會帶幾個這種小點,用於告訴用戶,當前是第幾個界面

實效果如下:

android.support.v4.ViewPager類在?API 4+ Support?支持包中開始為我們提供,它可以讓我們有能力左右滑動以'頁'的形式展示數據。我們可以通過繼承?PagerAdapter?來生成頁面形式的視圖。介紹具體的使用方式之前先來看下效果

2.實現代碼:

首先需要在layout文件中配置ViewPager View

<android.support.v4.view.ViewPager?

android:id="@+id/pager"?

android:layout_width="wrap_content"?

android:layout_height="wrap_content"?

android:layout_marginBottom="50dp"?/>?

3.Activity的實現代碼

public?class?MainActivity?extends?Activity?{?

ArrayList<View>?mViewList?=?new?ArrayList<View>();?

LayoutInflater?mLayoutInflater;?

LinearLayout?mNumLayout;?

Button?mPreSelectedBt;?

MyPagerAdapter?mPagerAdapter;?

@Override?

protected?void?onCreate(Bundle?savedInstanceState)?{?

super.onCreate(savedInstanceState);?

setContentView(R.layout.activity_main);?

mLayoutInflater?=?getLayoutInflater();?

//可以按照需求進行動態創建Layout,這裏暫用靜態的xml?layout?

mViewList.add(mLayoutInflater.inflate(R.layout.per_pager1,?null));?

mViewList.add(mLayoutInflater.inflate(R.layout.per_pager2,?null));?

mViewList.add(mLayoutInflater.inflate(R.layout.per_pager3,?null));?

ViewPager?viewPager?=?(ViewPager)?findViewById(R.id.pager);?

mPagerAdapter?=?new?MyPagerAdapter();?

viewPager.setAdapter(mPagerAdapter);?

mNumLayout?=?(LinearLayout)?findViewById(R.id.ll_pager_num);?

Bitmap?bitmap?=?BitmapFactory.decodeResource(getResources(),?R.drawable.icon_dot_normal);?

for?(int?i?=?0;?i?<?mViewList.size();?i++)?{?

Button?bt?=?new?Button(this);?

bt.setLayoutParams(new?ViewGroup.LayoutParams(bitmap.getWidth(),bitmap.getHeight()));?

bt.setBackgroundResource(R.drawable.icon_dot_normal);?

mNumLayout.addView(bt);?

}?

viewPager.setOnPageChangeListener(new?OnPageChangeListener()?{?

@Override?

public?void?onPageSelected(int?position)?{?

if(mPreSelectedBt?!=?null){?

mPreSelectedBt.setBackgroundResource(R.drawable.icon_dot_normal);?

}?

Button?currentBt?=?(Button)mNumLayout.getChildAt(position);?

currentBt.setBackgroundResource(R.drawable.home_page_dot_select);?

mPreSelectedBt?=?currentBt;?

//Log.i("INFO",?"current?item:"+position);?

}?

@Override?

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

//?TODO?Auto-generated?method?stub?

}?

@Override?

public?void?onPageScrollStateChanged(int?arg0)?{?

//?TODO?Auto-generated?method?stub?

}?

});?

}?

class?MyPagerAdapter?extends?PagerAdapter{?

@Override?

public?int?getCount()?{?

return?mViewList.size();?

}?

@Override?

public?Object?instantiateItem(View?container,?int?position)?{?

Log.i("INFO",?"instantiate?item:"+position);?

((ViewPager)?container).addView(mViewList.get(position),0);?

return?mViewList.get(position);?

}?

@Override?

public?void?destroyItem(View?container,?int?position,?Object?object)?{?

Log.i("INFO",?"destroy?item:"+position);?

((ViewPager)?container).removeView(mViewList.get(position));

}?

@Override?

public?boolean?isViewFromObject(View?arg0,?Object?arg1)?{?

return?arg0?==?arg1;?

}?

}?

} ?

有關viewPager + Adapter的更多用法,建議查看使用教程

  • 上一篇:外包服務的IT外包
  • 下一篇:莆田城廂區疫情防控通告(莆田市城廂區疫情防控指揮部)
  • copyright 2024編程學習大全網