如何在 java 中以编程方式设置微光布局持续时间?
How do I set the shimmer layout duration programmatically in java?
我想在 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 解决方案。
我阅读了 Shimmer 的源代码,据我了解,对于此版本 (V 0.4.0),开发人员无法以编程方式设置动画的持续时间。
所以你应该克隆库并自己更改它,或者你可以轻松使用this library。
在此示例中,我以编程方式在 TextView 中创建微光效果,设置持续时间和其他一些内容:
//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
。
停止微光使用shimmerContainer.hideShimmer();
查看文档 here 了解更多信息。
我想在 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 解决方案。
我阅读了 Shimmer 的源代码,据我了解,对于此版本 (V 0.4.0),开发人员无法以编程方式设置动画的持续时间。
所以你应该克隆库并自己更改它,或者你可以轻松使用this library。
在此示例中,我以编程方式在 TextView 中创建微光效果,设置持续时间和其他一些内容:
//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
。
停止微光使用shimmerContainer.hideShimmer();
查看文档 here 了解更多信息。