中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Android開發中使用ViewPager實現一個輪翻圖效果

發布時間:2020-11-20 15:50:04 來源:億速云 閱讀:168 作者:Leah 欄目:移動開發

Android開發中使用ViewPager實現一個輪翻圖效果?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

具體方法如下:

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 = { 
   "鞏俐不低俗,我就不能低俗", 
   "撲樹又回來啦!再唱經典老歌引萬人大合唱", 
   "揭秘北京電影如何升級", 
   "樂視網TV版大派送", 
   "熱血屌絲的反殺" 
 }; 
 private TextView tvImageDescription; // 圖片描述 
 private LinearLayout llPointGroup;  // 點控件的組 
 private int previousPosition = 0;  // viewpager選中的前一個position 
 private boolean isStop = false; // 控制循環的子線程是否停止 
  
 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() { 
    // 每兩秒鐘向主線程發送一條消息, 切換viewpager的界面 
    while(!isStop) { 
     SystemClock.sleep(2000); 
      
     handler.sendEmptyMessage(0); 
    } 
    Log.i(TAG, "循環線程停止了"); 
   }}).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); 
    
   // 根據圖片添加點 
   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);  // 設置當前選中的item的position 
   
  tvImageDescription.setText(imageDescriptions[previousPosition]); 
  llPointGroup.getChildAt(previousPosition).setEnabled(true); // 第一點被選中 
 } 
  
  
 class MyPagerAdapter extends PagerAdapter { 
 
  @Override 
  public int getCount() { 
   return Integer.MAX_VALUE; 
  } 
 
  /** 
   * 移動的對象和進來的對象如果是同一個就返回true, 代表復用view對象 
   * false 使用object對象 
   */ 
  @Override 
  public boolean isViewFromObject(View arg0, Object arg1) { 
   return arg0 == arg1; 
  } 
 
  /** 
   * 需要銷毀的對象的position傳進來 
   */ 
  @Override 
  public void destroyItem(ViewGroup container, int position, Object object) { 
   // 移除掉指定position的對象 
   mViewPager.removeView(imageViewList.get(position % imageViewList.size())); 
  } 
 
  /** 
   * 加載position位置的view對象 
   */ 
  @Override 
  public Object instantiateItem(ViewGroup container, int position) { 
   // 添加指定position的對象 
   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 
   
 } 
 
 /** 
  * 當viewpager頁面切換時回調 
  * @param position 就是當前顯示的page頁 
  */ 
 @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(); 
 } 
} 

關于Android開發中使用ViewPager實現一個輪翻圖效果問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

鹤壁市| 康定县| 林西县| 富宁县| 玛纳斯县| 凤庆县| 平和县| 高邮市| 昌江| 奉新县| 定结县| 胶州市| 新乐市| 郯城县| 聊城市| 义马市| 临夏市| 那坡县| 策勒县| 搜索| 遂昌县| 青铜峡市| 五家渠市| 郓城县| 望都县| 南江县| 彭州市| 弥渡县| 聂拉木县| 惠水县| 龙南县| 辽宁省| 桦甸市| 民乐县| 长沙市| 宁城县| 泾源县| 祁门县| 连南| 承德市| 宁安市|