2014-07-11 5 views
0

Je crée une application de fond d'écran dans lequel je veux utiliser l'option de recadrage de fond d'écran par défaut Android pour définir le fond d'écran. Ce que je veux dire est, dans mon application quand je clique sur le bouton set wallpaper, il me demandera de recadrer l'option papier peint.comment utiliser l'option de recadrage de fond d'écran par défaut Android dans mon application pour mettre en fond d'écran

note que je veux appeler l'option de recadrage de papier peint par défaut. comme nous papier peint de la valeur par défaut Android Image Gallery App

voir capture d'écran:

c'est la capture d'écran de l'application de fond d'écran par défaut, je veux appeler ceci pour définir mon application fond d'écran

enter image description here

c'est ce que j'ai essayé ce code définit le papier peint directement/centre de l'image

// set wallpaper on button click 
     Button b1 = (Button) findViewById(R.id.wll); 
     b1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v2) { 
       // // TODO Auto-generated method stub 

       WallpaperManager myWallpaperManager = WallpaperManager 
         .getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager 
          .setResource(MainActivity.ICONS[curruntPosition]); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }); 

code complet:

package com.td.gridview; 

import java.io.IOException; 
import android.app.Activity; 
import android.app.WallpaperManager; 
import android.content.Context; 
import android.content.Intent; 
import android.os.Bundle; 
import android.support.v4.view.PagerAdapter; 
import android.support.v4.view.ViewPager; 
import android.support.v4.view.ViewPager.OnPageChangeListener; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.Button; 
import android.widget.ImageView; 

public class SwipeActivity extends Activity { 

    protected int curruntPosition; 
    protected int hh; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.swipe_view); 

     // get intent data 
     Intent i = getIntent(); 

     // Selected image id 
     final int position = i.getExtras().getInt("id"); 

     final ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager); 
     ImagePagerAdapter adapter = new ImagePagerAdapter(); 
     viewPager.setAdapter(adapter); 
     viewPager.setCurrentItem(position); 
     viewPager.setOnPageChangeListener(new OnPageChangeListener() { 


      @Override 
      public void onPageSelected(int arg0) { 
       // TODO Auto-generated method stub 
       // Here you can set the wallpaper 
       curruntPosition = arg0; 
       if(curruntPosition==arg0){ 
       hh = 1; 
       } 
      } 

      @Override 
      public void onPageScrolled(int arg0, float arg1, int arg2) { 
       // TODO Auto-generated method stub 

      } 

      @Override 
      public void onPageScrollStateChanged(int arg0) { 
       // TODO Auto-generated method stub 

      } 

     }); 
     // 
     Button bx = (Button) findViewById(R.id.xoom); 
     bx.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View vx) { 
       // // TODO Auto-generated method stub 

       if(hh==1) 
       { 
        // Sending image id to FullScreenActivity 
        Intent i2 = new Intent(getApplicationContext(), 
          Full_Zoom.class); 
        // passing array index 
        i2.putExtra("id", curruntPosition); 
        startActivity(i2); 
       } 
       else 
       { 
        // get intent data 
        Intent i3 = getIntent(); 

        // Selected image id 
        int position = i3.getExtras().getInt("id"); 
        // Sending image id to FullScreenActivity 
        Intent i2 = new Intent(getApplicationContext(), Full_Zoom.class); 
        // passing array index 
        i2.putExtra("id", position); 
        startActivity(i2); 
       } 

      } 
     }); 
     // 

     // set wallpaper on button click 
     Button b1 = (Button) findViewById(R.id.wll); 
     b1.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v2) { 
       // // TODO Auto-generated method stub 

       WallpaperManager myWallpaperManager = WallpaperManager 
         .getInstance(getApplicationContext()); 
       try { 
        myWallpaperManager 
          .setResource(MainActivity.ICONS[curruntPosition]); 
       } catch (IOException e) { 
        // TODO Auto-generated catch block 
        e.printStackTrace(); 
       } 

      } 
     }); 

    } 

    public class ImagePagerAdapter extends PagerAdapter { 
     int[] icons = MainActivity.ICONS; 

     @Override 
     public int getCount() { 
      return icons.length; 
     } 

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

     @Override 
     public Object instantiateItem(ViewGroup container, int position) { 
      Context context = SwipeActivity.this; 
      ImageView imageView = new ImageView(context); 
      // int padding = context.getResources().getDimensionPixelSize(
      // R.dimen.padding_large); 
      // imageView.setPadding(padding, padding, padding, padding); 
      imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
      imageView.setImageResource(icons[position]); 
      ((ViewPager) container).addView(imageView, 0); 
      return imageView; 
     } 

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

} 
+0

Qu'avez-vous fait jusqu'à maintenant? Montrer du code. – CodeWarrior

+0

mis à jour ma question – user3739970

Répondre

1

J'ai mis en place a construit fonction des cultures et le code ici pour cela.

Appelez simplement doCrop(); sur btn cliquez sur Tout ce dont vous avez besoin s'il vous plaît dites-moi.

Button b1 = (Button) findViewById(R.id.wll); 
    b1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v2) { 
      // // TODO Auto-generated method stub 

      WallpaperManager myWallpaperManager = WallpaperManager 
        .getInstance(getApplicationContext()); 
      try { 
       myWallpaperManager 
         .setResource(MainActivity.ICONS[curruntPosition]); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      doCrop(); 

     } 
    }); 

    private void doCrop() { 
    final ArrayList<CropOption> cropOptions=new ArrayList<CropOption>(); 
    /** 
    * Open image crop app by starting an intent 
    * ‘com.android.camera.action.CROP‘. 
    */ 
    Intent intent = new Intent("com.android.camera.action.CROP"); 
    intent.setType("image/*"); 

    /** 
    * Check if there is image cropper app installed. 
    */ 
    List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, 0); 

    int size = list.size(); 

    /** 
    * If there is no image cropper app, display warning message 
    */ 
    if (size == 0) { 
     Toast.makeText(this,"Can not find image crop app",Toast.LENGTH_SHORT).show(); 
     return; 
    } else { 
     /** 
     * Specify the image path, crop dimension and scale 
     */ 
     intent.setData(mImageCaptureUri); 

     intent.putExtra("outputX", 200); 
     intent.putExtra("outputY", 200); 
     intent.putExtra("aspectX", 1); 
     intent.putExtra("aspectY", 1); 
     intent.putExtra("scale", true); 
     intent.putExtra("return-data", true); 
     /** 
     * There is posibility when more than one image cropper app exist, 
     * so we have to check for it first. If there is only one app, open 
     * then app. 
     */ 

     if (size == 1) { 
      Intent i = new Intent(intent); 
      ResolveInfo res = list.get(0); 
      i.setComponent(new ComponentName(res.activityInfo.packageName,res.activityInfo.name)); 
      startActivityForResult(i,CROP_FROM_CAMERA); 
     } else { 
      /** 
      * If there are several app exist, create a custom chooser to 
      * let user selects the app. 
      */ 
      for (ResolveInfo res : list) { 
       final CropOption co = new CropOption(); 

       co.title = getPackageManager().getApplicationLabel(res.activityInfo.applicationInfo); 
       co.icon = getPackageManager().getApplicationIcon(res.activityInfo.applicationInfo); 
       co.appIntent = new Intent(intent); 

       co.appIntent.setComponent(new ComponentName(res.activityInfo.packageName,res.activityInfo.name)); 

       cropOptions.add(co); 
      } 

      CropOptionAdapter adapter = new CropOptionAdapter(getApplicationContext(), cropOptions); 

      AlertDialog.Builder builder = new AlertDialog.Builder(this); 
      builder.setTitle("Choose Crop App"); 
      builder.setAdapter(adapter,new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int item) { 
          startActivityForResult(cropOptions.get(item).appIntent,CROP_FROM_CAMERA); 
         } 
        }); 

      builder.setOnCancelListener(new DialogInterface.OnCancelListener() { 
       @Override 
       public void onCancel(DialogInterface dialog) { 

        if (mImageCaptureUri != null) { 
         getContentResolver().delete(mImageCaptureUri, null,null); 
         mImageCaptureUri = null; 
        } 
       } 
      }); 
      AlertDialog alert = builder.create(); 
      alert.show(); 
     } 
    } 
} 

public class CropOption { 
    public CharSequence title; 
    public Drawable icon; 
    public Intent appIntent; 
} 

public class CropOptionAdapter extends ArrayAdapter<CropOption> { 
    private ArrayList<CropOption> mOptions; 
    private LayoutInflater mInflater; 

    public CropOptionAdapter(Context context, ArrayList<CropOption> options) { 
     super(context, R.layout.crop_selector, options); 
     mOptions = options; 
     mInflater = LayoutInflater.from(context); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup group) { 
     if (convertView == null) 
      convertView = mInflater.inflate(R.layout.crop_selector, null); 

     CropOption item = mOptions.get(position); 

     if (item != null) { 
      ((ImageView)convertView.findViewById(R.id.iv_icon)).setImageDrawable(item.icon); 
      ((TextView)convertView.findViewById(R.id.tv_name)).setText(item.title); 

      return convertView; 
     } 
     return null; 
    } 
} 
+0

mis à jour ma question, s'il vous plaît dites-moi comment puis-je l'ajuster avec mon code. Merci. – user3739970

+0

juste mettre le doCrop(); sur btn cliquez sur ce que vous avez déjà défini. et prenez make doCrop(); code de la méthode et exécuter si quelque chose que vous ne détectez pas dans le code s'il vous plaît dites-moi. –

+0

non je ne comprends pas comment implémenter, comment ajuster ce code avec mon code. va s'il vous plaît ajuster votre code avec mon code. – user3739970

Questions connexes