我正在製作一個應該顯示完整質量的可縮放圖像的應用程序,比如在Android圖庫應用程序中內置的應用程序。我嘗試過一些圖書館,但他們都沒有像我預測的那樣完成這項工作。其中一些不提供完整質量的位圖。Android的照片庫應用程序如何查看圖像?
其他像這樣的庫使用BitmapRegionDecoder
運行良好,但未能解碼某些圖像類型(CMYK,灰度)。
我不知道大多數照片庫應用程序如何完美顯示所有圖像?
我正在製作一個應該顯示完整質量的可縮放圖像的應用程序,比如在Android圖庫應用程序中內置的應用程序。我嘗試過一些圖書館,但他們都沒有像我預測的那樣完成這項工作。其中一些不提供完整質量的位圖。Android的照片庫應用程序如何查看圖像?
其他像這樣的庫使用BitmapRegionDecoder
運行良好,但未能解碼某些圖像類型(CMYK,灰度)。
我不知道大多數照片庫應用程序如何完美顯示所有圖像?
使用此代碼:
NAVViewPagerAdapter.java
public ViewPagerAdapter(Context aContext, int[] aImages) {
this.myContext = aContext;
myImages = aImages;
myInflater = LayoutInflater.from(aContext);
}
@Override
public void destroyItem(ViewGroup aContainer, int aPosition, Object aObject) {
aContainer.removeView((View)aObject);
}
@Override
public int getCount() {
return myImages.length;
}
/**
* @param view
* @param position
* @return
*/
@Override
public Object instantiateItem(ViewGroup view, int position) {
View aView = myInflater.inflate(R.layout.layout_inflate_fullscreen_activity, view, false);
final ImageView aImageView = (ImageView)aView
.findViewById(R.id.fullscreen_activity_IMG);
aImageView.setImageResource(myImages[position]);
view.addView(aView, 0);
return aView;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view.equals(object);
}
@Override
public void restoreState(Parcelable state, ClassLoader loader) {
}
@Override
public Parcelable saveState() {
return null;
}
}
NAVFullScreenFragment.java
public class NAVFullScreenFragment extends Fragment {
private ViewPager myViewPager;
private int[] myImagesArray = NAVGridViewAdapter.myImages;
private FragmentActivity myActivity;
@Nullable
@Override
public View onCreateView(LayoutInflater aInflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View aView = aInflater.inflate(R.layout.screen_fragment_viewpager, container, false);
viewPagerAndWidgetInitialize(aView);
return aView;
}
/**
* ViewPager & Widget Initialization
*
* @param aView
*/
private void viewPagerAndWidgetInitialize(View aView) {
myActivity = getActivity();
myViewPager = (ViewPager)aView.findViewById(R.id.screen_fragment_viewpager_pager);
CircleIndicator aIndicator = (CircleIndicator)aView.findViewById(R.id.indicator);
Bundle aBundle = getArguments();
myViewPager.setAdapter(new NAVViewPagerAdapter(myActivity, myImagesArray));
if(aBundle != null) {
int aPosition = aBundle.getInt("id");
// Set the images into ViewPager
NAVViewPagerAdapter aPageradapter = new NAVViewPagerAdapter(myActivity, myImagesArray);
myViewPager.setAdapter(aPageradapter);
aIndicator.setViewPager(myViewPager);
// Show images following the position
myViewPager.setCurrentItem(aPosition);
}
}
謝謝,但我正在尋找一種處理圖像文件加載像SubsamplingScaleImageView(但加載CMYK和灰度圖像失敗)的方式。 – Ahmad
好吧...我會嘗試找出其他解決方案。 –
正是你想知道些什麼?這個問題太廣泛了。加載,緩存和渲染圖像是非常複雜和複雜的過程。沒有一個圖書館可以完美地處理所有案件。 – eleven
「我試過了一些圖書館」 - 如果你給他們起名,這會有所幫助。 [SubsamplingScaleImageView'](https://github.com/davemorrissey/subsampling-scale-image-view)我沒有任何問題。您也可以查看現有的開源圖庫應用程序。 – CommonsWare
我已經嘗試SubsamplingScaleImageView,但未能加載CMYK和灰度圖像 – Ahmad