2013-09-27 63 views
0

我已經設置了我的應用程序來從外部源/鏈接加載大量圖像/壁紙,然後將這些圖像加載到視圖中,以便用戶可以滾動瀏覽它們。從圖片URL設置壁紙加載到視圖中

我想讓它如此,一旦用戶點擊他們在視圖中的圖像,它將被設置爲他們的壁紙。

這裏是我的類:

public class Question extends FragmentActivity implements OnClickListener { 
private static final String IMAGE_CACHE_DIR = "images"; 
public static final String EXTRA_IMAGE = "extra_image"; 

private ImagePagerAdapter mAdapter; 
private ImageFetcher mImageFetcher; 
private ViewPager mPager; 

@TargetApi(11) 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    if (BuildConfig.DEBUG) { 
     Utils.enableStrictMode(); 
    } 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.image_detail_pager); 

    AdView ad = (AdView) findViewById(R.id.ad); 
    ad.loadAd(new AdRequest()); 

    final DisplayMetrics displayMetrics = new DisplayMetrics(); 
    getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); 
    final int height = displayMetrics.heightPixels; 
    final int width = displayMetrics.widthPixels; 

    final int longest = (height > width ? height : width)/2; 

    ImageCache.ImageCacheParams cacheParams = new ImageCache.ImageCacheParams(
      this, IMAGE_CACHE_DIR); 
    cacheParams.setMemCacheSizePercent(0.25f); 

    mImageFetcher = new ImageFetcher(this, longest); 
    mImageFetcher.addImageCache(getSupportFragmentManager(), cacheParams); 
    mImageFetcher.setImageFadeIn(false); 

    mAdapter = new ImagePagerAdapter(getSupportFragmentManager(), 
      Images.imageUrlsQuestion.length); 
    mPager = (ViewPager) findViewById(R.id.pager); 
    mPager.setAdapter(mAdapter); 
    mPager.setPageMargin((int) getResources().getDimension(
      R.dimen.image_detail_pager_margin)); 
    mPager.setOffscreenPageLimit(2); 

    getWindow().addFlags(LayoutParams.FLAG_FULLSCREEN); 

    if (Utils.hasHoneycomb()) { 
     final ActionBar actionBar = getActionBar(); 

     actionBar.setDisplayShowTitleEnabled(false); 
     actionBar.setDisplayHomeAsUpEnabled(true); 

     mPager.setOnSystemUiVisibilityChangeListener(new View.OnSystemUiVisibilityChangeListener() { 
      @Override 
      public void onSystemUiVisibilityChange(int vis) { 
       if ((vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0) { 
        actionBar.hide(); 
       } else { 
        actionBar.show(); 
       } 
      } 
     }); 

     mPager.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); 
     actionBar.hide(); 
    } 

    final int extraCurrentItem = getIntent().getIntExtra(EXTRA_IMAGE, -1); 
    if (extraCurrentItem != -1) { 
     mPager.setCurrentItem(extraCurrentItem); 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 
    mImageFetcher.setExitTasksEarly(false); 
} 

@Override 
protected void onPause() { 
    super.onPause(); 
    mImageFetcher.setExitTasksEarly(true); 
    mImageFetcher.flushCache(); 
} 

@Override 
protected void onDestroy() { 
    super.onDestroy(); 
    mImageFetcher.closeCache(); 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
    case android.R.id.home: 
     NavUtils.navigateUpFromSameTask(this); 
     return true; 
    case R.id.clear_cache: 
     mImageFetcher.clearCache(); 
     Toast.makeText(this, R.string.clear_cache_complete_toast, 
       Toast.LENGTH_SHORT).show(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main_menu, menu); 
    return true; 
} 

public ImageFetcher getImageFetcher() { 
    return mImageFetcher; 
} 

private class ImagePagerAdapter extends FragmentStatePagerAdapter { 
    private final int mSize; 

    public ImagePagerAdapter(FragmentManager fm, int size) { 
     super(fm); 
     mSize = size; 
    } 

    @Override 
    public int getCount() { 
     return mSize; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return ImageDetailFragment 
       .newInstance(Images.imageUrlsQuestion[position]); 
    } 
} 

@TargetApi(11) 
@Override 
public void onClick(View v) { 
    final int vis = mPager.getSystemUiVisibility(); 
    if ((vis & View.SYSTEM_UI_FLAG_LOW_PROFILE) != 0) { 
     mPager.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); 
    } else { 
     mPager.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE); 
    } 
} 
} 
+0

你認爲你應該至少提示一個對話框詢問用戶是否要將其設置爲壁紙? –

+0

是的,我也想這樣做,我希望這個問題儘可能簡化,這太複雜了嗎? – Jack

回答

0

使用WallpaperManager here 採取設置壁紙看看,別忘了以下權限添加到您的清單:

 <uses-permission android:name="android.permission.SET_WALLPAPER"/>