欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android ViewPager實(shí)現(xiàn)圖片輪翻效果

 更新時(shí)間:2017年01月21日 16:07:05   作者:shineflowers  
這篇文章主要為大家詳細(xì)介紹了Android ViewPager實(shí)現(xiàn)圖片輪翻效果的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

很多App都有這種效果,特別一些電商類(lèi)的App,頂部每隔幾秒鐘會(huì)向右翻頁(yè)顯示下張圖片,用來(lái)作推廣或者內(nèi)容展示用的。今天來(lái)簡(jiǎn)單地模仿一下,還自帶一個(gè)自動(dòng)跳動(dòng)的小功能(底部有幾個(gè)小點(diǎn),圖片移動(dòng)的時(shí)候,點(diǎn)的狀態(tài)也在變化),用定時(shí)器來(lái)實(shí)現(xiàn)不難。

import java.util.ArrayList; 
import java.util.List; 
 
import android.app.Activity; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.os.SystemClock; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
import android.util.Log; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ImageView; 
import android.widget.LinearLayout; 
import android.widget.LinearLayout.LayoutParams; 
import android.widget.TextView; 
 
public class MainActivity extends Activity implements OnPageChangeListener { 
  
 protected static final String TAG = "MainActivity"; 
 private List<ImageView> imageViewList; 
 private ViewPager mViewPager; 
 private final int[] imageResIDs = { 
   R.drawable.a, 
   R.drawable.b, 
   R.drawable.c, 
   R.drawable.d, 
   R.drawable.e 
 }; 
 private final String[] imageDescriptions = { 
   "鞏俐不低俗,我就不能低俗", 
   "撲樹(shù)又回來(lái)啦!再唱經(jīng)典老歌引萬(wàn)人大合唱", 
   "揭秘北京電影如何升級(jí)", 
   "樂(lè)視網(wǎng)TV版大派送", 
   "熱血屌絲的反殺" 
 }; 
 private TextView tvImageDescription; // 圖片描述 
 private LinearLayout llPointGroup;  // 點(diǎn)控件的組 
 private int previousPosition = 0;  // viewpager選中的前一個(gè)position 
 private boolean isStop = false; // 控制循環(huán)的子線程是否停止 
  
 private Handler handler = new Handler(){ 
 
  @Override 
  public void handleMessage(Message msg) { 
   super.handleMessage(msg); 
    
   mViewPager.setCurrentItem(mViewPager.getCurrentItem() + 1); 
  } 
 }; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
   
  initView(); 
   
  new Thread(new Runnable() { 
 
   @Override 
   public void run() { 
    // 每?jī)擅腌娤蛑骶€程發(fā)送一條消息, 切換viewpager的界面 
    while(!isStop) { 
     SystemClock.sleep(2000); 
      
     handler.sendEmptyMessage(0); 
    } 
    Log.i(TAG, "循環(huán)線程停止了"); 
   }}).start(); 
 } 
  
 @Override 
 protected void onDestroy() { 
  isStop = true; 
  super.onDestroy(); 
 } 
 
 private void initView() { 
  mViewPager = (ViewPager) findViewById(R.id.viewpager); 
  llPointGroup = (LinearLayout) findViewById(R.id.ll_point_group); 
  tvImageDescription = (TextView) findViewById(R.id.tv_image_description); 
   
  imageViewList = new ArrayList<ImageView>(); 
   
  ImageView iv; 
  View pointView; 
  LayoutParams params; 
  for (int i = 0; i < imageResIDs.length; i++) { 
   iv = new ImageView(this); 
   iv.setBackgroundResource(imageResIDs[i]); 
   imageViewList.add(iv); 
    
   // 根據(jù)圖片添加點(diǎn) 
   pointView = new View(this); 
   params = new LayoutParams(5, 5); 
   params.leftMargin = 5; 
   pointView.setLayoutParams(params); 
   pointView.setEnabled(false); 
   pointView.setBackgroundResource(R.drawable.point_bg); 
   llPointGroup.addView(pointView); 
  } 
   
  MyPagerAdapter mAdapter = new MyPagerAdapter(); 
  mViewPager.setAdapter(mAdapter); 
  mViewPager.setOnPageChangeListener(this); 
   
  int item = (Integer.MAX_VALUE / 2) - ((Integer.MAX_VALUE / 2) % imageViewList.size()); 
  mViewPager.setCurrentItem(item);  // 設(shè)置當(dāng)前選中的item的position 
   
  tvImageDescription.setText(imageDescriptions[previousPosition]); 
  llPointGroup.getChildAt(previousPosition).setEnabled(true); // 第一點(diǎn)被選中 
 } 
  
  
 class MyPagerAdapter extends PagerAdapter { 
 
  @Override 
  public int getCount() { 
   return Integer.MAX_VALUE; 
  } 
 
  /** 
   * 移動(dòng)的對(duì)象和進(jìn)來(lái)的對(duì)象如果是同一個(gè)就返回true, 代表復(fù)用view對(duì)象 
   * false 使用object對(duì)象 
   */ 
  @Override 
  public boolean isViewFromObject(View arg0, Object arg1) { 
   return arg0 == arg1; 
  } 
 
  /** 
   * 需要銷(xiāo)毀的對(duì)象的position傳進(jìn)來(lái) 
   */ 
  @Override 
  public void destroyItem(ViewGroup container, int position, Object object) { 
   // 移除掉指定position的對(duì)象 
   mViewPager.removeView(imageViewList.get(position % imageViewList.size())); 
  } 
 
  /** 
   * 加載position位置的view對(duì)象 
   */ 
  @Override 
  public Object instantiateItem(ViewGroup container, int position) { 
   // 添加指定position的對(duì)象 
   mViewPager.addView(imageViewList.get(position % imageViewList.size())); 
   return imageViewList.get(position % imageViewList.size()); 
  } 
 } 
 
 
 @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 
   
 } 
 
 /** 
  * 當(dāng)viewpager頁(yè)面切換時(shí)回調(diào) 
  * @param position 就是當(dāng)前顯示的page頁(yè) 
  */ 
 @Override 
 public void onPageSelected(int position) { 
  tvImageDescription.setText(imageDescriptions[position % imageViewList.size()]); 
  llPointGroup.getChildAt(position % imageViewList.size()).setEnabled(true); 
  llPointGroup.getChildAt(previousPosition).setEnabled(false); 
   
  previousPosition = position % imageViewList.size(); 
 } 
} 

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android小程序?qū)崿F(xiàn)選項(xiàng)菜單

    Android小程序?qū)崿F(xiàn)選項(xiàng)菜單

    這篇文章主要為大家詳細(xì)介紹了Android小程序?qū)崿F(xiàn)選項(xiàng)菜單,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • SharedPreference引發(fā)ANR原理詳解

    SharedPreference引發(fā)ANR原理詳解

    這篇文章主要為大家介紹了SharedPreference引發(fā)ANR原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-02-02
  • Android Intent的幾種用法詳細(xì)解析

    Android Intent的幾種用法詳細(xì)解析

    這篇文章主要介紹了Android Intent的幾種用法,有需要的朋友可以參考一下
    2014-01-01
  • Android實(shí)現(xiàn)水波紋效果實(shí)例代碼

    Android實(shí)現(xiàn)水波紋效果實(shí)例代碼

    大家好,本篇文章主要講的是Android實(shí)現(xiàn)水波紋效果實(shí)例代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下
    2022-02-02
  • gradle配置國(guó)內(nèi)鏡像的實(shí)現(xiàn)

    gradle配置國(guó)內(nèi)鏡像的實(shí)現(xiàn)

    這篇文章主要介紹了gradle配置國(guó)內(nèi)鏡像的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-09-09
  • Android中的Bitmap序列化失敗的解決方法

    Android中的Bitmap序列化失敗的解決方法

    這篇文章主要介紹了Android中的Bitmap序列化失敗的解決方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • android判斷動(dòng)畫(huà)已結(jié)束示例代碼

    android判斷動(dòng)畫(huà)已結(jié)束示例代碼

    添加一個(gè)動(dòng)畫(huà)效果,發(fā)現(xiàn)動(dòng)畫(huà)沒(méi)執(zhí)行完 就直接跳轉(zhuǎn)或者finish掉,添加動(dòng)畫(huà)監(jiān)聽(tīng)事件即可,示例代碼如下
    2014-10-10
  • Android SoundPool實(shí)現(xiàn)簡(jiǎn)短小音效

    Android SoundPool實(shí)現(xiàn)簡(jiǎn)短小音效

    這篇文章主要為大家詳細(xì)介紹了Android SoundPool實(shí)現(xiàn)簡(jiǎn)短小音效,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11
  • android中intent傳遞list或者對(duì)象的方法

    android中intent傳遞list或者對(duì)象的方法

    這篇文章主要介紹了android中intent傳遞list或者對(duì)象的方法,分析羅列了常用的幾種方法,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-01-01
  • Android編程實(shí)現(xiàn)使用webView打開(kāi)本地html文件的方法

    Android編程實(shí)現(xiàn)使用webView打開(kāi)本地html文件的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)使用webView打開(kāi)本地html文件的方法,結(jié)合實(shí)例形式分析了Android中webview布局及打開(kāi)HTML文件的功能實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-02-02

最新評(píng)論