2017-04-11 88 views
0

我使用此自動滾動視圖打印機library和PagerAdapter顯示圖像和文本。然後我使用Animation將文本從左側移動到右側。問題在於viewpager的每一頁都不會出現動畫。 如何爲每個頁面設置動畫文本?在viewpager中滑動的動畫文本

public class MainActivity extends AppCompatActivity { 
 

 
    ArrayList<ModelObject> arrayList = new ArrayList<>(); 
 
    String[] country = new String[] { "China", "India", "United States", 
 
      "Indonesia", "Brazil", "Pakistan", "Nigeria"}; 
 

 
    int[] flag = new int[] { R.drawable.china, R.drawable.india, 
 
      R.drawable.unitedstates, R.drawable.indonesia, 
 
      R.drawable.brazil, R.drawable.pakistan, R.drawable.nigeria}; 
 

 
    @Override 
 
    protected void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_main); 
 

 
     ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager); 
 
     ViewPagerAdapter swipeAdapter = new ViewPagerAdapter(this, country, flag); 
 
     viewPager.setAdapter(swipeAdapter); 
 
     viewPager.setPageTransformer(false, new ViewPager.PageTransformer() { 
 
      @Override 
 
      public void transformPage(View page, float position) { 
 
       final float normalizedposition = Math.abs(Math.abs(position) - 1); 
 
       page.setAlpha(normalizedposition); 
 
      } 
 
     }); 
 
    } 
 

 
    public class ViewPagerAdapter extends PagerAdapter { 
 
     // Declare Variables 
 
     Context context; 
 
     String[] country; 
 
     int[] flag; 
 
     LayoutInflater inflater; 
 

 
     public ViewPagerAdapter(Context context, String[] country, int[] flag) { 
 
      this.context = context; 
 

 
      this.country = country; 
 
      this.flag = flag; 
 
     } 
 

 
     @Override 
 
     public int getCount() { 
 
      return flag.length; 
 
     } 
 

 
     @Override 
 
     public boolean isViewFromObject(View view, Object object) { 
 
      return view == ((RelativeLayout) object); 
 
     } 
 

 
     @Override 
 
     public Object instantiateItem(ViewGroup container, int position) { 
 

 
      // Declare Variables 
 

 
      TextView txtcountry; 
 
      ImageView imgflag; 
 

 
      inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
 
      View itemView = inflater.inflate(R.layout.pagefrag, container, false); 
 

 
      // Locate the TextViews in viewpager_item.xml 
 

 
      txtcountry = (TextView) itemView.findViewById(R.id.country); 
 

 
      // Capture position and set to the TextViews 
 

 
      txtcountry.setText(country[position]); 
 
      txtcountry.startAnimation(AnimationUtils.loadAnimation(context, R.anim.myanim)); 
 

 
      // Locate the ImageView in viewpager_item.xml 
 
      imgflag = (ImageView) itemView.findViewById(R.id.flag); 
 
      // Capture position and set to the ImageView 
 
      imgflag.setImageResource(flag[position]); 
 

 
      // Add viewpager_item.xml to ViewPager 
 
      ((ViewPager) container).addView(itemView); 
 

 
      return itemView; 
 
     } 
 

 
     @Override 
 
     public void destroyItem(ViewGroup container, int position, Object object) { 
 
      // Remove viewpager_item.xml from ViewPager 
 
      ((ViewPager) container).removeView((RelativeLayout) object); 
 

 
     } 
 
    } 
 

 

 

 
}

回答

0

可以使用ViewPager.PageTransformer接口,以動畫視圖頁面內

class MyPageTransformer implements ViewPager.PageTransformer { 

    @Override 
    public void transformPage(View page, float position) { 
     float pageTimesPosition = page.getWidth() * position; 
     View text = page.findViewById(R.id.text); 
     if (text != null) { 
      text.setAlpha(1.0f - position); 
     } 
    } 
} 

然後用viewPager.setPageTransformer(false, new MyPageTransformer());集你變壓器