首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在java中以编程方式设置shimmer布局持续时间?

如何在java中以编程方式设置shimmer布局持续时间?
EN

Stack Overflow用户
提问于 2019-04-04 15:35:24
回答 2查看 1.9K关注 0票数 4

我想用Java编程地设置shimmer布局持续时间。

我用xml完成了它,它可以工作,但是我想用Java来完成它。

以下是xml代码:

代码语言:javascript
运行
复制
<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代码:

代码语言:javascript
运行
复制
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解决方案。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-09 20:03:38

在这个例子中,我以编程的方式在TextView中创建一个Shimmer效果,设置持续时间和其他一些事情:

代码语言:javascript
运行
复制
    //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 myView
    myView.addView(shimmerContainer);

您也可以使用Shimmer.AlphaHighlightBuilder

要停止Shimmer,请使用shimmerContainer.hideShimmer();

有关更多信息,请查看docs 这里

票数 3
EN

Stack Overflow用户

发布于 2019-04-08 12:37:01

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

因此,您应该克隆这个库并自己修改它,或者您可以轻松地使用这个图书馆

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55519877

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档