Как установить макет мерцания программно в Java?
Я хочу установить продолжительность компоновки мерцания программно в Java.
Я сделал это в XML, он работает, но я хочу сделать это на Java.
Вот код XML:
<com.facebook.shimmer.ShimmerFrameLayout
android:id="@+id/shimmerHomeActivity_TradingEbooks"
android:layout_width="match_parent"
app:shimmer_shape="radial"
app:shimmer_auto_start="true"
app:shimmer_duration="800"
app:shimmer_repeat_mode="restart"
android:layout_alignParentTop="true"
android:layout_height="wrap_content">
<include layout="@layout/layout_shimmer_home_activity_trading_courses"/>
</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.shimmerHomeActivity_Carousel);
}
}
Я уже знаю, как сделать это в XML, но я хочу назначить его с помощью Java.
Я ищу Java или лучшее решение Kotlin.
2 ответа
Я прочитал источник Shimmer, как я понял, для этой версии (V 0.4.0), разработчики не могут программно установить продолжительность анимации.
Таким образом, вы должны клонировать библиотеку и изменить ее самостоятельно, или вы можете легко использовать эту библиотеку.
В этом примере я программно создаю эффект мерцания в 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 the some view
myView.addView(shimmerContainer);
Вы также можете использовать
Shimmer.AlphaHighlightBuilder
.
Чтобы остановить использование мерцания
shimmerContainer.hideShimmer();
Ознакомьтесь с документацией здесь для получения дополнительной информации.