如何在投掷时为片段内的文本视图设置不透明度?

How to set opacity for a textview inside a fragment while fling?

如何为片段内的文本视图赋予不透明度?

最初我有一个水平的圆形 ViewPager,当聚焦到屏幕和离开屏幕时,我的片段中的 TextView 应该分别淡入和淡出。

我用 onTouchListener 做了一些实验,但我没有得到任何结果。我也尝试设置一个硬编码的 alpha 值,但它没有按预期工作。

float prev = 0;
@Override
public void getPositionValue(float x1,float x2){
    AppUtils.alphaCalculator(x2,prev,deviceWidth);
    prev = x2;
    int index = viewPager.getCurrentItem();
    CustomViewPagerAdapter customViewPagerAdapter = (CustomViewPagerAdapter) viewPagerAdapter;
    ImageSliderFragment fragment = customViewPagerAdapter.getFragment(index);
    fragment.getView().findViewById(R.id.head_data).setAlpha(50);
    fragment.getView().findViewById(R.id.head_data).invalidate();
    ImageSliderFragment fragment2 = customViewPagerAdapter.getFragment(index+1);
    fragment2.getView().findViewById(R.id.head_data).setAlpha(50);
    fragment2.getView().findViewById(R.id.head_data).invalidate();
}

任何人都可以提供一些关于如何实现此目标的想法...

根据 kartheek 的说法,我可以得到 partial,下面是我的代码

if (position < -1) { // [-Infinity,-1)
            // This page is way off-screen to the left.
            view.findViewById(R.id.head_data).setAlpha(0.10f);
        } else if (position <= 1) { // [-1,1]

            if(position<0.1f){
                view.findViewById(R.id.head_data).setAlpha(1.0f);
            }else if(position<0.2f && position>0.1f){
                view.findViewById(R.id.head_data).setAlpha(0.68f);
            }else if(position<0.3f && position>0.2f){
                view.findViewById(R.id.head_data).setAlpha(0.55f);
            }else if(position<0.4f && position>0.3f){
                view.findViewById(R.id.head_data).setAlpha(0.45f);
            }else if(position<0.5f && position>0.4f){
                view.findViewById(R.id.head_data).setAlpha(0.38f);
            }else if(position<0.6f && position>0.5f){
                view.findViewById(R.id.head_data).setAlpha(0.30f);
            }else if(position<0.7f && position>0.6f){
                view.findViewById(R.id.head_data).setAlpha(0.22f);
            }else if(position<0.8f && position>0.7f){
                view.findViewById(R.id.head_data).setAlpha(0.15f);
            }else if(position<0.9f && position>0.8f){
                view.findViewById(R.id.head_data).setAlpha(0.10f);
            }else if(position<1.0f && position>0.9f){
                view.findViewById(R.id.head_data).setAlpha(0.05f);
            }

            if(position<-0.1f){
                view.findViewById(R.id.head_data).setAlpha(1.0f);
            }else if(position<-0.2f && position>-0.1f){
                view.findViewById(R.id.head_data).setAlpha(0.68f);
            }else if(position<-0.3f && position>-0.2f){
                view.findViewById(R.id.head_data).setAlpha(0.55f);
            }else if(position<-0.4f && position>-0.3f){
                view.findViewById(R.id.head_data).setAlpha(0.45f);
            }else if(position<-0.5f && position>-0.4f){
                view.findViewById(R.id.head_data).setAlpha(0.38f);
            }else if(position<-0.6f && position>-0.5f){
                view.findViewById(R.id.head_data).setAlpha(0.30f);
            }else if(position<-0.7f && position>-0.6f){
                view.findViewById(R.id.head_data).setAlpha(0.22f);
            }else if(position<-0.8f && position>-0.7f){
                view.findViewById(R.id.head_data).setAlpha(0.15f);
            }else if(position<-0.9f && position>-0.8f){
                view.findViewById(R.id.head_data).setAlpha(0.10f);
            }else if(position<-1.0f && position>-0.9f){
                view.findViewById(R.id.head_data).setAlpha(0.05f);
            }

        } else { // (1,+Infinity]
            // This page is way off-screen to the right
            view.findViewById(R.id.head_data).setAlpha(0.10f);
        }

图像从右到左对焦正常。

但两种方式都不行

可以通过ViewPager.PageTransformer实现,在ViewPager滑动fragments时会回调。这是一个小例子

public class SimplePageTransformer implements ViewPager.PageTransformer {

        public void transformPage(View view, float position) {

            int pageWidth = view.getWidth();


             if (position < -1) { // [-Infinity,-1)
                    // This page is way off-screen to the left.
                } else if (position <= 1) { // [-1,1]

                } else { // (1,+Infinity]
                    // This page is way off-screen to the right
                }
        }
    }

你可以从这个link中找到一个detail example