2014-07-21 2 views
1

Gud Amis du matin. J'ai créé Imageview dans la rangée de listview. Je tournerai ma bitmap dans mon Imageview comme,Comment puis-je ajouter la méthode Round Corner pour bitmap dans mon imageview android?

public View getView(final int position, View convertView, ViewGroup parent) { 
    View row = convertView; 
    UserHolder holder = null; 
    Log.d("main", "pos:" + "" + position); 

      if (row == null) { 
     LayoutInflater inflater = ((Activity) context).getLayoutInflater(); 
     row = inflater.inflate(layoutResourceId, parent, false); 
     holder = new UserHolder(); 
     holder.Name = (TextView) row.findViewById(R.id.name); 

     holder.Number = (TextView) row.findViewById(R.id.number); 

     holder.img=(ImageView) row.findViewById(R.id.image); 


     Typeface face=Typeface.createFromAsset(context.getAssets(),"helve.ttf"); 

     holder.Name.setTypeface(face); 
     //holder.Number.setTypeface(face); 

     //bit = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);  
     // 

     //holder.img.setImageBitmap(getRoundedCornerBitmap(bit, 40)); 

     row.setTag(holder); 
    } else { 
     holder = (UserHolder) row.getTag(); 
    } 
    User user = data.get(position); 

    holder.Name.setText(user.getName()); 
    //holder.img.setImageBitmap(user.getbi()); 
    holder.img.setImageBitmap(roundCornerImage(user.getbi(),50)); 
    //holder.img.setImageBitmap(roundCornerImage(BitmapFactory.decodeResource(user.getbi(), R.drawable.ic_launcher),60)); 
    holder.Number.setText(user.getNumber()); 




    // Give Different Back Ground To List View--------------------------------------------- 

    if ((position % 2) == 0) { 
     row.setBackgroundResource(R.drawable.list_dark); 
    } else { 
     row.setBackgroundResource(R.drawable.list_light); 
    } 




    Log.d("main", "pos:" + "" + position); 

    return row; 

Maintenant, je veux mettre Bitmap Méthode Mon Cette imageview. avec mon code. Les méthodes que je veux ajouter sont ci-dessous.

public Bitmap roundCornerImage(Bitmap src, float round) { 
    // Source image size 
    int width = src.getWidth(); 
    int height = src.getHeight(); 
    // create result bitmap output 
    Bitmap result = Bitmap.createBitmap(width, height, Config.ARGB_8888); 
    // set canvas for painting 
    Canvas canvas = new Canvas(result); 
    canvas.drawARGB(0, 0, 0, 0); 

    // configure paint 
    final Paint paint = new Paint(); 
    paint.setAntiAlias(true); 
    //paint.setColor); 


    // configure rectangle for embedding 
    final Rect rect = new Rect(0, 0, width, height); 
    final RectF rectF = new RectF(rect); 

    // draw Round rectangle to canvas 
    canvas.drawRoundRect(rectF, round, round, paint); 

    // create Xfer mode 
    paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
    // draw source image to canvas 
    canvas.drawBitmap(src, rect, rect, paint); 

    // return final image 
    return result; 
} 

Comment puis-je ajouter cette méthode dans mon code. Merci d'avance.

+0

Avez-vous la source Bitmap? – Pankaj

+0

ya j'ai obtenir l'image de contact dans l'image bitmap. – user3855491

+0

Fermé cette question comme un doublon car c'est exactement une [question en double] (http://stackoverflow.com/questions/24839366/set-round-corner-method-in-imageview) demandé par vous pour le même problème. Au lieu de poser une nouvelle question, vous devriez éditer votre question existante et fournir suffisamment de détails pour vous permettre d'obtenir de bonnes réponses. –

Répondre

0

Essayez ci-dessous le code:

holder.img.setImageBitmap(roundCornerImage(user.getbi(),ANY CONSTANT VALUE TO MAKE YOUR IMAGEVIEW ROUND LIKE-1,2)); 
+0

fait, mais quelle est la valeur constante? Je suis nouveau dans android @ pratik – user3855491

+0

essayez avec un, c'est pour combien de tour vous avez eu besoin, essayez avec 1 et voir à quoi il ressemble –

+0

ok. Laisse-moi essayer. – user3855491

0

Vous pouvez Ussé cette méthode dans adaptor--

public Bitmap getRoundedRectBitmap(Bitmap scalebitmap, int pixels) { 
     Bitmap targetBitmap = null; 
     try { 

      int targetWidth = 150; 
      int targetHeight = 150; 
      targetBitmap = Bitmap.createBitmap(targetWidth, targetHeight, 
        Bitmap.Config.ARGB_8888); 
      Canvas canvas = new Canvas(targetBitmap); 
      Path path = new Path(); 
      path.addCircle(
        ((float) targetWidth)/2, 
        ((float) targetHeight)/2, 
        (Math.min(((float) targetWidth), ((float) targetHeight))/2), 
        Path.Direction.CW); 
      Paint paint = new Paint(); 
      paint.setColor(Color.GRAY); 
      // paint.setStyle(Paint.Style.STROKE); 
      paint.setStyle(Paint.Style.FILL); 
      paint.setAntiAlias(true); 
      paint.setDither(true); 
      paint.setFilterBitmap(true); 
      canvas.drawOval(new RectF(0, 0, targetWidth, targetHeight), paint); 
      // paint.setColor(Color.TRANSPARENT); 
      canvas.clipPath(path); 
      Bitmap sourceBitmap = scalebitmap; 
      canvas.drawBitmap(
        sourceBitmap, 
        new Rect(0, 0, sourceBitmap.getWidth(), sourceBitmap 
          .getHeight()), new RectF(0, 0, targetWidth, 
          targetHeight), paint); 

     } catch (NullPointerException e) { 
      e.printStackTrace(); 
     } catch (OutOfMemoryError o) { 
      o.printStackTrace(); 
     } 
     return targetBitmap; 
    } 

Et vous pouvez écrire dans une méthode constante de classe et appeler cette méthode dans l'adaptateur comme // photo est l'image bitmap que vous voulez convertir en rond

Bitmap bitmapImage = Bitmap.createScaledBitmap(photo, 200, 200,true); 
    bitmap = imageprocessing.getRoundedRectBitmap(bitmapImage, 100); 
+0

qu'est ce que l'imageprocessing. @ user1170640 – user3855491

+0

J'avais écrit getRoundedRxtBitmap() dans le fichier Imageprocessing.java et l'imageprocessing en est l'objet. – Minp

+0

que ce qui est bitmap .. ??? – user3855491

Questions connexes