2012-07-10 5 views
0

저는 ImageButton을 가지고 있으며 다른 크기로 버튼의 크기를 조절하려고합니다. 즉, 이미지가 올바른 선택이 아닙니다. 그래서 나는 사용자 정의 모양을 소스로 ImageButton을 생각하고있었습니다.도형으로 안드로이드 ImageButton 만들기

나는 버튼을 같이 할 :

enter image description here

나는이 시작되지만 회전 물건 붙어있어

: 나는 예상대로

<?xml version="1.0" encoding="utf-8"?> 
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
    android:shape="rectangle" > 
    
    <stroke 
     android:width="2dp" 
     android:color="@color/red" /> 
    <rotate 
     android:fromDegrees="90" 
     android:toDegrees="135" > 
     <shape android:shape="line" > 
      <stroke 
       android:width="2dp" 
       android:color="@color/red" > 
      </stroke> 
     </shape> 
    </rotate> 

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

</shape> 

이 그러나 회전하지 않습니다 그것까지. 어쩌면 나는 완전히 잘못되어 올바른 방향으로 밀고 나가야 할 수도 있습니다. :-) 감사.

답변

0

나는 정의 Button 구현이 문제를 해결했고,이처럼 보이는 onDraw() 방법 덮어 쓰기 :

@Override 
public void onDraw(Canvas canvas) 
{ 
    width = getMeasuredWidth(); 
    height = getMeasuredHeight(); 

    // diagonal top left | bottom right 
    canvas.drawLine(0, 0, width, height, mPaint); 

    // diagonal top right | bottom left 
    canvas.drawLine(width, 0, 0, height, mPaint); 

    // horizontal top 
    canvas.drawLine(0, 0, width, 0, mPaint); 

    // horizontal bottom 
    canvas.drawLine(0, height, width, height, mPaint); 

    // vertical left 
    canvas.drawLine(0, 0, 0, height, mPaint); 

    //vertical right 
    canvas.drawLine(width, 0, width, height, mPaint); 
} 

당신은 자신 등 당신이 원하는 색상과 크기에 따라 mPaint을 설정해야합니다을 너의 뇌졸중.

0

Bitmap.createScaledBitmap (...) 메서드를 사용하여 필요에 따라 비트 맵을 사용하고 크기를 조정 해 보았습니까? 그런 다음 BitmapDrawable로 쉽게 변환 한 다음이 BitmapDrawable을 (button-name) .setBackgroundDrawable (nameOfBitmapDrawable);을 사용하여 버튼의 배경으로 지정할 수 있습니다.

그럼 그 이미지 (게시물에있는 이미지)를 드로어 블 (투명 PNG 일 가능성이 있음)로 저장 한 다음 해당 드로어 블을 비트 맵으로 변환하면됩니다. 거기에서 위에서 설명한 단계를 따라야합니다. 희망이 도움이됩니다.

+0

이미지를 고급화하면 픽셀 화되어 끔찍한 느낌을줍니다. – fdomig

+0

이 방법이 효과가있을 수도 있고 아닐 수도 있습니다 : 상자의 고해상도 대형 버전을 만든 다음 작은 크기로 다시 크기를 조정하거나 답변에서 제안한 방법을 사용하여 필요에 맞게 조정하십시오. 이 접근법은 픽셀 화를 막는데 도움이되었지만, 제 경우에는 큰 축소 사진을 작은 축소판으로 스케일해야했습니다. 이 방법이 효과가 있는지 알려주세요. –

+0

글쎄, 그렇게하고 싶지 않아. 어쨌든 고마워. – fdomig

0
<shape xmlns:android="http://schemas.android.com/apk/res/android" 
      android:shape="rectangle" 
      > 
    <gradient android:angle="270" 
      android:endColor="#000000" 
      android:centerColor="#00ccff" 
      android:startColor="#000000" 
      /> 
    <corners android:radius="5dp" /> 
    </shape> 
Try this 
+0

그건 완전히 다른 모양입니다. – fdomig

관련 문제