2016-03-05 7 views
1

Я пытаюсь сделать приложение для обоев. Я могу установить обои, но не могу установить обои его реального размера. Приложение похоже на когда пользователь нажимает на изображение из GridView it будет установлен в качестве wallpaper.Here является ли code`Как отрегулировать размер обоев

import android.app.Activity; 
import android.app.WallpaperManager; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.os.Bundle; 
import android.content.Context; 
import android.util.DisplayMetrics; 
import android.view.ViewGroup; 
import android.view.View; 
import android.view.WindowManager; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.BaseAdapter; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.Toast; 

import java.io.IOException; 

public class MainActivity extends Activity { 
Integer[] imagesIDs ={ 
R.drawable.img8}; 
Bitmap goal; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    requestWindowFeature(getWindow().FEATURE_NO_TITLE); 
    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 
    setContentView(R.layout.activity_main); 
    GridView gridView=(GridView)findViewById(R.id.gridView); 
    gridView.setAdapter(new ImageAdapter(this)); 
    gridView.setOnItemClickListener(new OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
      Toast.makeText(getBaseContext(),"pic"+(position+1)+"selected",Toast.LENGTH_SHORT).show(); 
      goal= BitmapFactory.decodeResource(getResources(),imagesIDs[position]); 
      DisplayMetrics metrics = new DisplayMetrics(); 
      getWindowManager().getDefaultDisplay().getMetrics(metrics); 
      int height = metrics.heightPixels; 
      int width = metrics.widthPixels; 
      WallpaperManager wallpaperManager = WallpaperManager.getInstance(getApplicationContext()); 
      try { 
       wallpaperManager.setBitmap(goal); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

     } 
    }); 
} 


private class ImageAdapter extends BaseAdapter { 
    private Context context; 
    public ImageAdapter(Context c) { 
     context=c; 
    } 
    @Override 
    public int getCount() { 
     return imagesIDs.length; 
    } 

    @Override 
    public Object getItem(int position) { 
     return position; 
    } 

    @Override 
    public long getItemId(int position) { 
     return position; 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ImageView imageView; 
     if (convertView ==null){ 
      imageView =new ImageView(context); 
      imageView.setLayoutParams(new GridView.LayoutParams(200,200)); 
      imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     } 
     else{ 
      imageView=(ImageView)convertView; 
     } 
     imageView.setImageResource(imagesIDs[position]); 
     return imageView; 
    } 


} 
} 

ответ

0

Вы применили центр культур к просмотру изображения

imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);

FIT_XY Try вместо CENTER_CROP

Примечание: FIT_XY изменит соотношение сторон вашего изображения. проверьте link для получения дополнительной информации.

+0

Я хочу обои, чтобы соответствовать screen.But согласно вашей коде он просто подходит образ GridView –

0

В файле манифеста, Возьми пользователь permision SET ОБОИ SIZE HINTS и это сделает работу

Смежные вопросы