Android ViewPager實(shí)現(xiàn)選項(xiàng)卡切換
本文實(shí)例介紹了ViewPager實(shí)現(xiàn)選項(xiàng)卡切換,效果圖如下:

步驟一:這里使用兼容低版本的v4包進(jìn)行布局,這里eclipse沒(méi)有輸入提示,所以要手動(dòng)輸入,文件名稱“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"
tools:context=".MainActivity" >
<android.support.v4.view.ViewPager
android:id="@+id/viewpager"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
>
<android.support.v4.view.PagerTabStrip
android:id="@+id/tabstrip"
android:layout_height="wrap_content"
android:layout_width="wrap_content"
/>
</android.support.v4.view.ViewPager>
</RelativeLayout>
步驟二:選項(xiàng)卡中的內(nèi)容都是從布局文件中獲取,所以我新建兩個(gè)測(cè)試布局“l(fā)ayout1.xml”和“l(fā)ayout2.xml”,里面內(nèi)容隨意。
步驟三:布局已經(jīng)完成,在MainActivity.java類中,實(shí)現(xiàn)關(guān)鍵功能。
首先要聲明ViewPager和PagerTabStrip對(duì)象,通過(guò)findViewById分別找到資源id,聲明ArrayList<View>來(lái)存放測(cè)試布局文件,核心代碼如下:
package com.example.viewpager;
import java.util.ArrayList;
import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.PagerTabStrip;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.Menu;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
public class MainActivity extends Activity implements OnPageChangeListener {
private ViewPager viewpager;
private PagerTabStrip tabstrip;
private String[] title={"首頁(yè)","新聞","公告","圖片"};
private ArrayList<View> views=new ArrayList<View>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
viewpager=(ViewPager) findViewById(R.id.viewpager);
tabstrip=(PagerTabStrip) findViewById(R.id.tabstrip);
initial();
viewpager.setAdapter(new MyPagerAdapter());
}
public void initial(){
views.add(getLayoutInflater().inflate(R.layout.layout1,null));
views.add(getLayoutInflater().inflate(R.layout.layout2,null));
views.add(getLayoutInflater().inflate(R.layout.layout1,null));
views.add(getLayoutInflater().inflate(R.layout.layout2,null));
tabstrip.setBackgroundColor(getResources().getColor(android.R.color.holo_blue_light));
tabstrip.setTabIndicatorColor(getResources().getColor(android.R.color.holo_blue_bright));
tabstrip.setTextColor(Color.WHITE);
viewpager.setOnPageChangeListener(this);
}
class MyPagerAdapter extends PagerAdapter{
@Override
public int getCount() {
// TODO 自動(dòng)生成的方法存根
return views.size();
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View v=views.get(position);
container.addView(v);
return v;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
// TODO 自動(dòng)生成的方法存根
//super.destroyItem(container, position, object);
container.removeView(views.get(position));
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
// TODO 自動(dòng)生成的方法存根
return arg0==arg1;
}
@Override
public CharSequence getPageTitle(int position) {
// TODO 自動(dòng)生成的方法存根
return title[position];
}
}
@Override
public void onPageScrollStateChanged(int arg0) {
// TODO 自動(dòng)生成的方法存根
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
// TODO 自動(dòng)生成的方法存根
}
@Override
public void onPageSelected(int arg0) {
// TODO 自動(dòng)生成的方法存根
//Toast.makeText(MainActivity.this,"新年快樂(lè)",Toast.LENGTH_SHORT).show();
}
}
以上就是本文的全部?jī)?nèi)容,還有一些問(wèn)題會(huì)在之后的文章中繼續(xù)學(xué)習(xí),希望大家繼續(xù)關(guān)注。
相關(guān)文章
Android實(shí)現(xiàn)懸浮窗的簡(jiǎn)單方法實(shí)例
相信大家應(yīng)該也都發(fā)現(xiàn)了,現(xiàn)在很多應(yīng)用都使用到懸浮窗,例如微信在視頻的時(shí)候,點(diǎn)擊Home鍵,視頻小窗口仍然會(huì)在屏幕上顯示,下面這篇文章主要給大家介紹了關(guān)于Android實(shí)現(xiàn)懸浮窗的簡(jiǎn)單方法,需要的朋友可以參考下2021-09-09
Android消息通知Notification常用方法(發(fā)送消息和接收消息)
最近在做消息通知類Notification的相關(guān)業(yè)務(wù),利用閑暇時(shí)間總結(jié)一下,主要分為兩部分來(lái)記錄:發(fā)送消息和接收消息,對(duì)Android消息通知相關(guān)知識(shí)感興趣的朋友一起看看吧2024-02-02
Android獲取超級(jí)管理員權(quán)限的實(shí)現(xiàn)
這篇文章主要介紹了Android獲取超級(jí)管理員權(quán)限的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-03-03
JSON中optString和getString方法的區(qū)別
optString方法會(huì)在對(duì)應(yīng)的key中的值不存在的時(shí)候返回一個(gè)空字符串,但是getString會(huì)拋一個(gè)JSONException 。下面通過(guò)一段代碼給大家介紹JSON中optString和getString方法的區(qū)別,感興趣的朋友一起看看吧2017-07-07
Android中BroadcastReceiver(異步接收廣播Intent)的使用
Broadcast Receiver是Android的五大組件之一,使用頻率也很高,用于異步接收廣播Intent,本文將詳細(xì)介紹,需要的朋友可以參考下2012-12-12
kotlin中object關(guān)鍵字的三種使用場(chǎng)景
這篇文章主要給大家介紹了關(guān)于kotlin中object關(guān)鍵字的三種使用場(chǎng)景,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用kotlin具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-06-06
Flutter實(shí)現(xiàn)資源下載斷點(diǎn)續(xù)傳的示例代碼
在項(xiàng)目開(kāi)發(fā)中,特別是C端的產(chǎn)品,資源下載實(shí)現(xiàn)斷點(diǎn)續(xù)傳是非常有必要的。今天我們不講過(guò)多原理的知識(shí),分享下簡(jiǎn)單實(shí)用的資源斷點(diǎn)續(xù)傳2022-07-07
Android framework ATMS啟動(dòng)流程
這篇文章主要為大家介紹了Android framework ATMS啟動(dòng)流程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03

