What is the best way to make a moving image on Android? I have read that GIF is not recommended ... So what would be the best option? I need to upload from here
.image (R.drawable.ImagenNueva)
An image that has movement, I do not care whether it's a GIF or another way, but that the images are changing.
Any recommendations on how to do it in the best way on Android?
EDIT:
I'm using the repository : link
And in my clase
:
addSlide(new SlideFragmentBuilder()
.backgroundColor(R.color.fondo)
.buttonsColor(R.color.boton)
.image(R.drawable.prueba)
.title("Texto")
.description("Texto")
.build());
From there I have to upload the image, as I said @MiguelAlba knew it but it does not work in this case since from this clase
I do not charge the ImagenView
of layout
that is done from the repository, clase
of the repository that loads:
public class SlideFragment extends ParallaxFragment {
private final static String BACKGROUND_COLOR = "background_color";
private static final String BUTTONS_COLOR = "buttons_color";
private static final String TITLE = "title";
private static final String DESCRIPTION = "description";
private static final String NEEDED_PERMISSIONS = "needed_permission";
private static final String POSSIBLE_PERMISSIONS = "possible_permission";
private static final String IMAGE = "image";
private static final int PERMISSIONS_REQUEST_CODE = 15621;
private int backgroundColor;
private int buttonsColor;
private int image;
private String title;
private String description;
private String[] neededPermissions;
private String[] possiblePermissions;
private TextView titleTextView;
private TextView descriptionTextView;
private ImageView imageView;
public static SlideFragment createInstance(SlideFragmentBuilder builder) {
SlideFragment slideFragment = new SlideFragment();
Bundle bundle = new Bundle();
bundle.putInt(BACKGROUND_COLOR, builder.backgroundColor);
bundle.putInt(BUTTONS_COLOR, builder.buttonsColor);
bundle.putInt(IMAGE, builder.image);
bundle.putString(TITLE, builder.title);
bundle.putString(DESCRIPTION, builder.description);
bundle.putStringArray(NEEDED_PERMISSIONS, builder.neededPermissions);
bundle.putStringArray(POSSIBLE_PERMISSIONS, builder.possiblePermissions);
slideFragment.setArguments(bundle);
return slideFragment;
}
public static boolean isNotNullOrEmpty(String string) {
return string != null && !string.isEmpty();
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_slide, container, false);
titleTextView = (TextView) view.findViewById(R.id.txt_title_slide);
descriptionTextView = (TextView) view.findViewById(R.id.txt_description_slide);
imageView = (ImageView) view.findViewById(R.id.image_slide);
initializeView();
return view;
}
public void initializeView() {
Bundle bundle = getArguments();
backgroundColor = bundle.getInt(BACKGROUND_COLOR);
buttonsColor = bundle.getInt(BUTTONS_COLOR);
image = bundle.getInt(IMAGE, 0);
title = bundle.getString(TITLE);
description = bundle.getString(DESCRIPTION);
neededPermissions = bundle.getStringArray(NEEDED_PERMISSIONS);
possiblePermissions = bundle.getStringArray(POSSIBLE_PERMISSIONS);
updateViewWithValues();
}
public int backgroundColor() {
return backgroundColor;
}
public int buttonsColor() {
return buttonsColor;
}
public boolean hasAnyPermissionsToGrant() {
boolean hasPermissionToGrant = hasPermissionsToGrant(neededPermissions);
if (!hasPermissionToGrant) {
hasPermissionToGrant = hasPermissionsToGrant(possiblePermissions);
}
return hasPermissionToGrant;
}
public boolean hasNeededPermissionsToGrant() {
return hasPermissionsToGrant(neededPermissions);
}
public boolean canMoveFurther() {
return true;
}
public String cantMoveFurtherErrorMessage() {
return getString(R.string.impassable_slide);
}
private void updateViewWithValues() {
titleTextView.setText(title);
descriptionTextView.setText(description);
if (image != 0) {
imageView.setImageDrawable(ContextCompat.getDrawable(getActivity(), image));
imageView.setVisibility(View.VISIBLE);
}
}
public void askForPermissions() {
ArrayList<String> notGrantedPermissions = new ArrayList<>();
if (neededPermissions != null) {
for (String permission : neededPermissions) {
if (isNotNullOrEmpty(permission)) {
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED) {
notGrantedPermissions.add(permission);
}
}
}
}
if (possiblePermissions != null) {
for (String permission : possiblePermissions) {
if (isNotNullOrEmpty(permission)) {
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED) {
notGrantedPermissions.add(permission);
}
}
}
}
String[] permissionsToGrant = removeEmptyAndNullStrings(notGrantedPermissions);
ActivityCompat.requestPermissions(getActivity(), permissionsToGrant, PERMISSIONS_REQUEST_CODE);
}
private boolean hasPermissionsToGrant(String[] permissions) {
if (permissions != null) {
for (String permission : permissions) {
if (isNotNullOrEmpty(permission)) {
if (ContextCompat.checkSelfPermission(getContext(), permission) != PackageManager.PERMISSION_GRANTED) {
return true;
}
}
}
}
return false;
}
@SuppressWarnings("SuspiciousMethodCalls")
private String[] removeEmptyAndNullStrings(final ArrayList<String> permissions) {
List<String> list = new ArrayList<>(permissions);
list.removeAll(Collections.singleton(null));
return list.toArray(new String[list.size()]);
}
}