Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/215.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Viewpager Android中转换页面期间转换图像_Android - Fatal编程技术网

在Viewpager Android中转换页面期间转换图像

在Viewpager Android中转换页面期间转换图像,android,Android,我想在查看寻呼机幻灯片时转换图像。我在Viewpager滑动时看到了这一点 public void transformPage(View view, float f) 被称为。在这个函数中,我想添加一些功能,以便在查看1到2或2到3这样的幻灯片时,第一页的一些图像应该转到第二屏幕 我想实现像GROFERS Android应用欢迎屏幕这样的功能 请帮助我尝试根据您使用的页面更改图像 public void transformPage(View view, float f) {

我想在查看寻呼机幻灯片时转换图像。我在Viewpager滑动时看到了这一点

public void transformPage(View view, float f)
被称为。在这个函数中,我想添加一些功能,以便在查看1到2或2到3这样的幻灯片时,第一页的一些图像应该转到第二屏幕

我想实现像GROFERS Android应用欢迎屏幕这样的功能


请帮助我

尝试根据您使用的页面更改图像

 public void transformPage(View view, float f)
    {
      int position=(int)f;
      switch(f)
      {
       case 1:
         imageview.setImageResource(R.id.youimageID);
         break;
       case 2: //so on ..
      }
    }

尝试根据您所在的页面位置更改图像

 public void transformPage(View view, float f)
    {
      int position=(int)f;
      switch(f)
      {
       case 1:
         imageview.setImageResource(R.id.youimageID);
         break;
       case 2: //so on ..
      }
    }

尝试根据您所在的页面位置更改图像

 public void transformPage(View view, float f)
    {
      int position=(int)f;
      switch(f)
      {
       case 1:
         imageview.setImageResource(R.id.youimageID);
         break;
       case 2: //so on ..
      }
    }

尝试根据您所在的页面位置更改图像

 public void transformPage(View view, float f)
    {
      int position=(int)f;
      switch(f)
      {
       case 1:
         imageview.setImageResource(R.id.youimageID);
         break;
       case 2: //so on ..
      }
    }

我是用这个做的-

 public void transformPage(View view, float f) {
            if(view.getTag() != null) {
                int i = Integer.parseInt(String.valueOf(view.getTag()));
                if (f >= -1F && f < 1.0F) {
                    if (i == 0) {
                        animateOnFirstScreen(f);
                    } else {
                        if (i == 1) {
                            animateOnSecondScreen(f);
                            return;
                        }
                        if (i == 2) {
                            animateOnThirdScreen(f);
                            return;
                        }
                    }
                }
            }
        }

private void animateOnFirstScreen(float f)
    {
        if (f <= 0.0F)
        {
            f = Math.abs(f);
            posX = (TEXT_GROCERY_MART_FINAL_X - TEXT_GROCERY_MART_INIT_X) * f + TEXT_GROCERY_MART_INIT_X;
            textGroceryMart.setTranslationX(posX);
            posY = (TEXT_GROCERY_MART_FINAL_Y - TEXT_GROCERY_MART_INIT_Y) * f + TEXT_GROCERY_MART_INIT_Y;
            textGroceryMart.setTranslationY(posY);

              imageMuffin.setAlpha(0.0F);
                imageEnergyDrink.setAlpha(0.0F);
                imageMuffin.setScaleX(0.0F);
                imageEnergyDrink.setScaleX(0.0F);
        }
    }
public void transformPage(视图,浮点f){
if(view.getTag()!=null){
inti=Integer.parseInt(String.valueOf(view.getTag());
如果(f>=-1F&&f<1.0F){
如果(i==0){
第一屏动画(f);
}否则{
如果(i==1){
第二屏动画(f);
返回;
}
如果(i==2){
动画屏幕(f);
返回;
}
}
}
}
}
第一个屏幕上的私有无效动画(浮动f)
{

如果(f我用这个-

 public void transformPage(View view, float f) {
            if(view.getTag() != null) {
                int i = Integer.parseInt(String.valueOf(view.getTag()));
                if (f >= -1F && f < 1.0F) {
                    if (i == 0) {
                        animateOnFirstScreen(f);
                    } else {
                        if (i == 1) {
                            animateOnSecondScreen(f);
                            return;
                        }
                        if (i == 2) {
                            animateOnThirdScreen(f);
                            return;
                        }
                    }
                }
            }
        }

private void animateOnFirstScreen(float f)
    {
        if (f <= 0.0F)
        {
            f = Math.abs(f);
            posX = (TEXT_GROCERY_MART_FINAL_X - TEXT_GROCERY_MART_INIT_X) * f + TEXT_GROCERY_MART_INIT_X;
            textGroceryMart.setTranslationX(posX);
            posY = (TEXT_GROCERY_MART_FINAL_Y - TEXT_GROCERY_MART_INIT_Y) * f + TEXT_GROCERY_MART_INIT_Y;
            textGroceryMart.setTranslationY(posY);

              imageMuffin.setAlpha(0.0F);
                imageEnergyDrink.setAlpha(0.0F);
                imageMuffin.setScaleX(0.0F);
                imageEnergyDrink.setScaleX(0.0F);
        }
    }
public void transformPage(视图,浮点f){
if(view.getTag()!=null){
inti=Integer.parseInt(String.valueOf(view.getTag());
如果(f>=-1F&&f<1.0F){
如果(i==0){
第一屏动画(f);
}否则{
如果(i==1){
第二屏动画(f);
返回;
}
如果(i==2){
动画屏幕(f);
返回;
}
}
}
}
}
第一个屏幕上的私有无效动画(浮动f)
{

如果(f我用这个-

 public void transformPage(View view, float f) {
            if(view.getTag() != null) {
                int i = Integer.parseInt(String.valueOf(view.getTag()));
                if (f >= -1F && f < 1.0F) {
                    if (i == 0) {
                        animateOnFirstScreen(f);
                    } else {
                        if (i == 1) {
                            animateOnSecondScreen(f);
                            return;
                        }
                        if (i == 2) {
                            animateOnThirdScreen(f);
                            return;
                        }
                    }
                }
            }
        }

private void animateOnFirstScreen(float f)
    {
        if (f <= 0.0F)
        {
            f = Math.abs(f);
            posX = (TEXT_GROCERY_MART_FINAL_X - TEXT_GROCERY_MART_INIT_X) * f + TEXT_GROCERY_MART_INIT_X;
            textGroceryMart.setTranslationX(posX);
            posY = (TEXT_GROCERY_MART_FINAL_Y - TEXT_GROCERY_MART_INIT_Y) * f + TEXT_GROCERY_MART_INIT_Y;
            textGroceryMart.setTranslationY(posY);

              imageMuffin.setAlpha(0.0F);
                imageEnergyDrink.setAlpha(0.0F);
                imageMuffin.setScaleX(0.0F);
                imageEnergyDrink.setScaleX(0.0F);
        }
    }
public void transformPage(视图,浮点f){
if(view.getTag()!=null){
inti=Integer.parseInt(String.valueOf(view.getTag());
如果(f>=-1F&&f<1.0F){
如果(i==0){
第一屏动画(f);
}否则{
如果(i==1){
第二屏动画(f);
返回;
}
如果(i==2){
动画屏幕(f);
返回;
}
}
}
}
}
第一个屏幕上的私有无效动画(浮动f)
{

如果(f我用这个-

 public void transformPage(View view, float f) {
            if(view.getTag() != null) {
                int i = Integer.parseInt(String.valueOf(view.getTag()));
                if (f >= -1F && f < 1.0F) {
                    if (i == 0) {
                        animateOnFirstScreen(f);
                    } else {
                        if (i == 1) {
                            animateOnSecondScreen(f);
                            return;
                        }
                        if (i == 2) {
                            animateOnThirdScreen(f);
                            return;
                        }
                    }
                }
            }
        }

private void animateOnFirstScreen(float f)
    {
        if (f <= 0.0F)
        {
            f = Math.abs(f);
            posX = (TEXT_GROCERY_MART_FINAL_X - TEXT_GROCERY_MART_INIT_X) * f + TEXT_GROCERY_MART_INIT_X;
            textGroceryMart.setTranslationX(posX);
            posY = (TEXT_GROCERY_MART_FINAL_Y - TEXT_GROCERY_MART_INIT_Y) * f + TEXT_GROCERY_MART_INIT_Y;
            textGroceryMart.setTranslationY(posY);

              imageMuffin.setAlpha(0.0F);
                imageEnergyDrink.setAlpha(0.0F);
                imageMuffin.setScaleX(0.0F);
                imageEnergyDrink.setScaleX(0.0F);
        }
    }
public void transformPage(视图,浮点f){
if(view.getTag()!=null){
inti=Integer.parseInt(String.valueOf(view.getTag());
如果(f>=-1F&&f<1.0F){
如果(i==0){
第一屏动画(f);
}否则{
如果(i==1){
第二屏动画(f);
返回;
}
如果(i==2){
动画屏幕(f);
返回;
}
}
}
}
}
第一个屏幕上的私有无效动画(浮动f)
{

如果(f我花了两天半的时间才使它在Grofers完美无瑕。如果你仔细观察,你看到的从一个碎片移动到另一个碎片的一切实际上并不是从一个碎片移动到另一个碎片

活动中有一个ViewPager,ViewPager的片段包含静态图像。您看到的所有移动图像都在活动本身内部,而不是片段内部

何时转换图像?

当您收到来自ViewPager的回调时

public void transformPage(View view, float f) { 
    ...
}
您可以根据哪个片段进入视图和哪个片段离开视图,对活动中的图像进行转换

您如何知道哪个片段进入,哪个片段离开?

在创建要添加到ViewPager的片段时,您可以为每个片段附加一个标记

rootView.setTag(tag)
标记可以是一个整数,表示片段在ViewPager中的位置

public void transformPage(View view, float position) {
int tag = Integer.parseInt(String.valueOf(view.getTag()));
    if (position < -1) { // [-Infinity,-1)
        // This page is way off-screen to the left.
    } else if (position < 1) { // [-1,1]
        // Decide which fragment is sliding left and which one is sliding right.
        if (tag == 0)
            // Transformation between first and second fragment
        else if (tag == 1)
            // Transformation between first, second and third fragment
        else if (tag == 2)
            // Transformation between third and fourth fragment
    } else { // (1,+Infinity]
        // This page is way off-screen to the right.
    }
}
public页面(视图、浮动位置){
int tag=Integer.parseInt(String.valueOf(view.getTag());
if(位置<-1){/[-无穷大,-1)
//这个页面在屏幕的左边。
}else如果(位置<1){/[-1,1]
//确定哪个碎片向左滑动,哪个碎片向右滑动。
如果(标记==0)
//第一个片段和第二个片段之间的转换
else if(标记==1)
//第一、第二和第三片段之间的转换
else if(标记==2)
//第三和第四片段之间的转换
}else{/(1,+无穷大)
//这一页在屏幕的右边。
}
}
需要注意什么事情?

  • 您需要注意不同类型屏幕的纵横比 因此,它可以根据不同的屏幕大小进行缩放
  • 即使图像不在屏幕上,也要注意所有图像的转换(否则,当滚动不同的片段时,您会看到一些错误,比如某些图像在其他屏幕上可见)

我花了两天半的时间才在格罗夫做到完美无瑕