【问题标题】:How do I set the shimmer layout duration programmatically in java?如何在 Java 中以编程方式设置微光布局持续时间?
【发布时间】:2019-08-26 10:36:21
【问题描述】:

我想在 Java 中以编程方式设置微光布局持续时间。

我已经在 xml 中完成了,它可以工作,但我想在 Java 中完成。

这里是xml代码:

<com.facebook.shimmer.ShimmerFrameLayout
    android:id="@+id/shimmerFrameLayout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:shimmer_shape="radial"
    app:shimmer_auto_start="true"
    app:shimmer_duration="800"
    app:shimmer_repeat_mode="restart">

    <include layout="@layout/content_home_activity"/>
</com.facebook.shimmer.ShimmerFrameLayout>

这是我的 Java 代码:

public class HomeActivity extends Fragment{


    private ShimmerFrameLayout shimmerCarousel;
    private static final int shimmerDuration = 1500;

    public HomeActivity() {
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }

    @Override
    @Nullable
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState){

    View view = inflater.inflate(R.layout.activity_home, container, false);

    context = getActivity().getApplicationContext();

    shimmerCarousel = view.findViewById(R.id.shimmerFrameLayout);
    }
}    

我已经知道如何在 xml 中执行此操作,但我想使用 Java 进行分配。

我正在寻找 Java 或更好的 Kotlin 解决方案。

【问题讨论】:

标签: android user-interface shimmer


【解决方案1】:

在此示例中,我以编程方式在 TextView 中创建 Shimmer 效果,设置持续时间和其他一些内容:

    //Create shimmer builder
    Shimmer.ColorHighlightBuilder shimmerBuilder = new Shimmer.ColorHighlightBuilder()
                                    .setBaseColor(ContextCompat.getColor(context, R.color.White))
                                    .setHighlightColor(ContextCompat.getColor(context, R.color.White))
                                    .setDuration(1200)
                                    .setIntensity(0.9f)
                                    .setDropoff(0.9f)
                                    .setBaseAlpha(0.6f)
                                    .setHighlightAlpha(1f);
    //Create shimmer
    Shimmer shimmer = shimmerBuilder.build();
    
    //Creating some view to apply the shimmer     
    TextView myTextView = new TextView(context);

    //Creating the shimmer frame layout
    ShimmerFrameLayout shimmerContainer = new ShimmerFrameLayout(context);
    shimmerContainer.setLayoutParams(new FrameLayout.LayoutParams(FrameLayout.LayoutParams.WRAP_CONTENT, FrameLayout.LayoutParams.WRAP_CONTENT));
    shimmerContainer.addView(myTextView);
    shimmerContainer.setShimmer(shimmer);
    shimmerContainer.showShimmer(true);

    ...

    //Adding the shimmerContainer to the some view
    myView.addView(shimmerContainer);

您也可以使用Shimmer.AlphaHighlightBuilder。
要停止微光,请使用shimmerContainer.hideShimmer();
查看文档here 了解更多信息。

【讨论】:

    【解决方案2】:

    我阅读了 Shimmer 的源代码,据我了解,对于这个版本 (V 0.4.0),开发人员无法以编程方式设置动画的持续时间。

    所以你应该克隆库并自己更改它,或者你可以轻松使用this library。

    【讨论】:

      猜你喜欢
      • 2019-04-30
      • 2012-05-31
      • 1970-01-01
      • 2020-06-23
      • 1970-01-01
      • 2022-10-19
      • 2013-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多