首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在imageview android应用程序中设置屏幕适配墙纸

在imageview android应用程序中设置屏幕适配墙纸
EN

Stack Overflow用户
提问于 2014-08-26 06:55:05
回答 2查看 462关注 0票数 0

我有一个非常简单的图像视图应用程序,应该是设置墙纸时,用户点击任何图像。然而,我的问题是,当我在viewpager中显示完整的图像时。当用户点击图像时,它会占据设备或模拟器的整个屏幕。换句话说,图像在主屏幕中似乎被扭曲或剪切。谁能建议如何解决这个问题的代码,或者我的代码中遗漏了什么?我相信我必须更改ImageAdpater代码..但我不确定...以下是我的代码。

Mainactivity.java

代码语言:javascript
复制
import android.app.Activity;
import android.content.Intent;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.support.v4.view.ViewPager;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ShareActionProvider;




public class MainActivity extends Activity {

    MediaPlayer oursong;

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
      oursong = MediaPlayer.create(MainActivity.this, R.raw.a);
      oursong.start ();
    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
    ImageAdapter adapter = new ImageAdapter(this);
    viewPager.setAdapter(adapter);
  }

  private ShareActionProvider mShareActionProvider;


  @Override
  public boolean onCreateOptionsMenu(Menu menu) {
      // Inflate menu resource file.
      getMenuInflater().inflate(R.menu.activity_main, menu);

      // Locate MenuItem with ShareActionProvider
      MenuItem item = menu.findItem(R.id.menu_item_share);

      // Fetch and store ShareActionProvider
      mShareActionProvider = (ShareActionProvider) item.getActionProvider();

      // Return true to display menu
      return true;
  }

  // Call to update the share intent
  private void setShareIntent(Intent shareIntent) {
      if (mShareActionProvider != null) {
          mShareActionProvider.setShareIntent(shareIntent);
      }
  }

     @Override
     protected void onPause(){
     super.onPause();
      oursong.release();
 }

}

Imageadapter.java

代码语言:javascript
复制
import java.io.IOException;

import android.app.WallpaperManager;
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;

public class ImageAdapter extends PagerAdapter {
    Context context;
    private final int[] GalImages = new int[] {
        R.drawable.one,
        R.drawable.two,
        R.drawable.three
    };
    ImageAdapter(Context context){
        this.context=context;
    }
    @Override
    public int getCount() {
      return GalImages.length;
    }

    @Override
    public boolean isViewFromObject(View view, Object object) {
      return view == ((ImageView) object);
    }

    @Override
    public Object instantiateItem(ViewGroup container, final int position) {
      ImageView imageView = new ImageView(context);
      int padding = context.getResources().getDimensionPixelSize(R.dimen.padding_small);
      imageView.setPadding(padding, padding, padding, padding);
      imageView.setScaleType(ImageView.ScaleType.FIT_XY);
      imageView.setImageResource(GalImages[position]);

      imageView.setOnClickListener(new View.OnClickListener() {

           public void onClick(View view) {

                    WallpaperManager myWallpaperManager  = WallpaperManager.getInstance(context);
                    try {
                            myWallpaperManager.setResource(GalImages[position]);
                    } catch (IOException e) {
                             // TODO Auto-generated catch block
                             e.printStackTrace();
                    }       

           }

           });


      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
      ((ViewPager) container).removeView((ImageView) object);
    }
  }
EN

回答 2

Stack Overflow用户

发布于 2014-08-26 07:22:01

要设置墙纸,请尝试如下所示:

代码语言:javascript
复制
      @Override
    public Object instantiateItem(ViewGroup container, final int position) {
      final ImageView imageView = new ImageView(context);
      int padding = context.getResources().getDimensionPixelSize(1);
      imageView.setPadding(padding, padding, padding, padding);
      imageView.setScaleType(ImageView.ScaleType.FIT_XY);
      imageView.setImageResource(GalImages[position]);

      imageView.setOnClickListener(new View.OnClickListener() {

          public void onClick(View view) {

                 WallpaperManager myWallpaperManager
    = WallpaperManager.getInstance(context);
   try {
    Bitmap bitmap=((BitmapDrawable)imageView.getDrawable()).getBitmap();
    if(bitmap!=null)
    myWallpaperManager.setBitmap(bitmap);
   } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
   }
          }
          });

      ((ViewPager) container).addView(imageView, 0);
      return imageView;
    }
票数 0
EN

Stack Overflow用户

发布于 2014-08-26 07:24:48

也许那里的图片资源还不够大,不能完全适应屏幕。您确定资源图像具有正确的尺寸和比例吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25495550

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档