2011-06-30 22 views
6

thumb_rounded.xml dosyasını tanımladım ve android uygulamasında res/drawable klasörünün içine yerleştirdim. Bu dosya ile benim ImageViewthat haber başparmak içeren yılında,Yuvarlatılmış Köşeler ile Android ImageView Çalışmıyor

<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle" > 
<corners android:radius="13.0dip" /> 
</shape> 

Yuvarlak köşeler elde etmek istiyorum ve ancak ben Yuvarlak köşeler elde yok, benim ImageView arka plan olarak bu kuruyorum, görüntü bir dikdörtgen kalır. Bunu nasıl alacağına dair bir fikri olan var mı? Ben bu ekranda aynı etkiyi elde etmek istiyorum:

B&H first screen

çok teşekkür ederiz

T

+0

bu yazı bir göz alarak deneyin: http://stackoverflow.com/questions/2459916/how-to-make-an -görüntü-için-yuvarlak-köşeleri – bradley4

+0

Ben bir ImageView gibi yuvarlatılmış köşeleri sağlamak mümkün olduğuna inanmıyorum. Bu yazıdan kodu takip etmek isteyeceksiniz: http://stackoverflow.com/questions/2459916/how-to-make-an-imageview-to-have-rounded-corners – wajiw

+0

Orada öğretilmeden bir yol var. java kullanmak zorunda, örneğin ... B & H android uygulaması ilk ekranda yuvarlatılmış köşeleri ile dikdörtgen bir görüntü var, ben aynı etkiyi elde etmek istiyorum. – Thiago

cevap

2

Etiketlerdeki birkaç eksik ediyoruz.

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> 
    <solid android:color="#ffffff"/>  

    <stroke android:width="3dp" 
      android:color="#ff000000"/> 

    <padding android:left="1dp" 
      android:top="1dp" 
      android:right="1dp" 
      android:bottom="1dp"/> 

    <corners android:radius="30px"/> 
</shape> 

Eğer RoundRectShape farkındayız Ayrıca

here Görülme: İşte yeni bir örnek değil mi?

+1

Kodunuz işe yaramadı. Beyaz bir arka plana sahip yuvarlatılmış bir dikdörtgen olmalı o zaman benim görüntüm ... RoundRectShape'a bir göz atacağım, teşekkürler @Pedro – Thiago

+0

Sadece bir örnek gönderiyordum, değerleri istediklerinize uyarlamıyordum, ama Bunu yapmak çok basit olmalı! –

+0

+1 ......... ayrıca benim için de faydalıdır. Teşekkürler –

20

İşte
@Override 
public void onCreate(Bundle mBundle) { 
super.onCreate(mBundle); 
setContentView(R.layout.main); 

ImageView image = (ImageView) findViewById(R.id.img); 
Bitmap bitImg = BitmapFactory.decodeResource(getResources(), 
    R.drawable.default_profile_image); 
image.setImageBitmap(getRoundedCornerImage(bitImg)); 
} 

public static Bitmap getRoundedCornerImage(Bitmap bitmap) { 
Bitmap output = Bitmap.createBitmap(bitmap.getWidth(), 
    bitmap.getHeight(), Config.ARGB_8888); 
Canvas canvas = new Canvas(output); 

final int color = 0xff424242; 
final Paint paint = new Paint(); 
final Rect rect = new Rect(0, 0, bitmap.getWidth(), bitmap.getHeight()); 
final RectF rectF = new RectF(rect); 
final float roundPx = 100; 

paint.setAntiAlias(true); 
canvas.drawARGB(0, 0, 0, 0); 
paint.setColor(color); 
canvas.drawRoundRect(rectF, roundPx, roundPx, paint); 

paint.setXfermode(new PorterDuffXfermode(Mode.SRC_IN)); 
canvas.drawBitmap(bitmap, rect, rect, paint); 

return output; 

} 

, yuvarlak corder roundPx bağlıdır, onu kullanmaya.

+0

çalışmak için görünmüyor bu işe yaramıyor gibi görünüyor – Sarvesh

+0

onun için çalışıyor teşekkürler – KDeogharkar

+0

karo modu tekrar yuvarlak köşeleri ile birlikte yapmak nasıl? – Goofy

13

bir maske olarak işlev, tam olarak o yuvarlak görüntü efekti elde edebilirsiniz ImageView üstüne bir görünüm yerleştirirseniz.

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:background="#ffff" 
    android:layout_height="match_parent" > 

<ImageView 
    android:id="@+id/image1" 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:padding="10dp" 
    android:src="@android:color/holo_red_dark" 
    /> 

<View 
    android:layout_width="200dp" 
    android:layout_height="200dp" 
    android:layout_alignLeft="@+id/image1" 
    android:layout_alignTop="@+id/image1" 
    android:layout_margin="00dp" 
    android:background="@drawable/mask" /> 
</RelativeLayout> 

ve mask.xml çekilebilir:

<?xml version="1.0" encoding="utf-8"?> 
<shape 
    xmlns:android="http://schemas.android.com/apk/res/android"> 
    <corners android:radius="50dp" />  
    <solid android:color="#0000"/> 
    <stroke android:color="#ffff" android:width="10dp"/> 
</shape> 

İki önemli husus:

Bu örnekte bakmak maske çekilebilir ait

  1. inme genişliği gerektiği ImageView
  2. 'un dolgu rengiyle eşleşir Çizilebilir maskenin arka plan rengiyle eşleşmesi gerekir.
  3. Maske köşelerinin yarıçapı, strok genişliğine karşılık gelecek şekilde ayarlanmalıdır (böylece, maskenin arkasındaki görüntüyü göremezsiniz).

örnek aşağıdaki görüntüyü verir: enter image description here

hth

+0

Arka plan arka plan sağlam değilse ne olur? Bu yöntem düzgün bir arka plan ile yuvarlatılmış köşeleri alanı gösterdiği için iyi çalışmayacaktır. –

+0

true, bu yalnızca arka planla karışan bir maskeyi tanımlayabiliyorsanız çalışacaktır (düz bir renk olmasına gerek yoktur). –

+0

bu harika bir numara. Çevresine iyi uyum sağlayacağından emin olmak için diğer çözümlerden daha iyi. –

İlgili konular