使用Picasso和Glide获取黑色ImageView
问题
我正在编写一个应用程序,应该有一个“幻灯片”function。 我发现这个以毕加索为基础的漂亮的图书馆 ,完全符合我的要求,而且大部分时间它都运行良好。
问题是,有时我的图像没有加载到幻灯片ImageView
…它只显示一个“黑色canvas”,你可以看到下面的截图。
我从我的drawables从本地资源加载图像。 有时发生在纵向模式,有时在横向模式。 我使用哪个图像并不重要,有时会发生“黑度”。
编辑:我使用Android 5.0.2和4.4.2 – 它似乎并没有发生在4.4.2。 只在5.0.2上。
第二编辑:它发生在Android 5.1的Moto X 2014上。
第三次编辑:我试图加载的图片在磁盘上有45KB,分辨率为900×445。
然而,另一个编辑:我已经打开布局rects如所build议的,这些是结果:
它保持在滚动上。
有时,它变成白色而不是黑色(或白色,然后是黑色)。
我尝试过的其他东西:我的drawables位于res/drawable
文件夹,当我将该文件夹中的文件更改为res/drawable-xxxhdpi
滑块在5.0.2设备上工作。 跆拳道???
到目前为止,我尝试了什么
我已经尝试了不同的图像,在幻灯片上加载多个图像,甚至这个拉动请求 ,改变毕加索滑翔的lib。 似乎没有任何工作,错误似乎是随机的。
一旦我试图使用url而不是本地存储上的实际可绘制的URL,它就起作用了。 与完全相同的图像。
以下是我如何加载图像:
Fragment.java
private SliderLayout slider; private PagerIndicator indicator; // ... private void setupSlider() { HashMap<String,Integer> file_maps = new HashMap<>(); file_maps.put("Blah",R.drawable.banner_1); file_maps.put("Bleh",R.drawable.banner_2); file_maps.put("Blih",R.drawable.banner_3); file_maps.put("Bloh",R.drawable.banner_4); for (String name : file_maps.keySet()) { DefaultSliderView dsv = new DefaultSliderView(getActivity()); dsv.description(name) .image(file_maps.get(name)) .error(R.drawable.banner_error) .empty(R.drawable.empty) .setScaleType(BaseSliderView.ScaleType.Fit) .setOnSliderClickListener(this); //add your extra information dsv.bundle(new Bundle()); dsv.getBundle() .putString("extra",name); slider.addSlider(dsv); } slider.setPresetTransformer(SliderLayout.Transformer.Default); slider.setCustomIndicator(indicator); slider.setCustomAnimation(new DescriptionAnimation()); slider.setDuration(4000); slider.addOnPageChangeListener(this); }
fragment.xml之
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:custom="http://schemas.android.com/apk/res-auto" tools:context="com.example.fragments.Fragment" android:layout_width="wrap_content" android:layout_height="wrap_content"> <ScrollView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/sv_main"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:id="@+id/rl_main"> <com.daimajia.slider.library.SliderLayout android:id="@+id/slider" android:layout_width="match_parent" android:layout_height="200dp" /> <com.daimajia.slider.library.Indicators.PagerIndicator android:id="@+id/custom_indicator" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_alignParentRight="true" android:layout_below="@+id/slider" custom:shape="oval" custom:selected_color="#00BFA5" custom:unselected_color="#55333333" custom:selected_padding_left="@dimen/spacing_medium" custom:selected_padding_right="@dimen/spacing_medium" custom:selected_padding_top="3dp" custom:selected_padding_bottom="@dimen/spacing_small" custom:unselected_padding_left="@dimen/spacing_medium" custom:unselected_padding_right="@dimen/spacing_medium" custom:unselected_padding_top="@dimen/spacing_small" custom:unselected_padding_bottom="4dp" custom:selected_width="@dimen/spacing_medium" custom:selected_height="@dimen/spacing_medium" custom:unselected_width="6dp" custom:unselected_height="6dp" /> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_below="@+id/custom_indicator" android:id="@+id/ll_main_body"> </LinearLayout> </RelativeLayout> </ScrollView> <!-- Other stuff --> </RelativeLayout>
我正在关注来自libs wiki页面 的教程 。 LogCat上没有出现任何错误,这使得解决这个问题变得更加困难。
有任何想法吗?
创build资源文件夹在该文件夹中命名为drawable-nodpi将您的图像,而不是不同的文件夹或可绘制的文件夹。
您是否尝试过使用ViewPager
和ImageView
并将一组图像URI传递给适配器? 我认为如果你自己实现它,你将能够避免/debugging好得多。
这个库对我来说工作的很好,我第一次使用它。 这是一个非常好的图书馆。
第一
SliderLayout不被任何东西引用。 这就是魔术发生的地方。 制作一个xml布局,并通过SliderLayout引用它。 之后,不要忘记调用startAutoScroll()和onPause()stopAutoScroll()。
https://github.com/daimajia/AndroidImageSlider/wiki/Start-Using
上面的链接基本上都是你需要的。
第二
问题也可能是它在一个scrollView中。 滚动callback可能是行为不端。
做一个简单的布局,从一个简单的滑块开始,用自定义工作。
祝你好运。
- 工具栏不会以Scrollview作为CoordinatorLayout的子项折叠
- Android – 从byte 播放mp3
- ArrayIndexOutOfBoundsException自定义Android适配器在ListView中的多个视图
- 无法添加窗口android.view.ViewRoot$W@44da9bc0 – 此窗口types的权限被拒绝
- Android Studio不会将更改部署到应用程序
- 使导航抽屉在状态栏后面绘制
- 什么是Android的UiThread(UI线程)
- 如何知道EditText何时失去焦点?
- 为什么不总是使用android:configChanges =“keyboardHidden | orientation”?