마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

layout.xml에 제가 만든 view소스를 컴포넌트로 사용할려면...?

0 추천

layout.xml에 제가 만든 view소스를 컴포넌트로 사용할려면 어떻게 해야하는지요?

예를 들어서 아래와 같이 extends view를 만들었다고하면은요

=========================================================

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout            
  xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<com.TestView
 android:id="@+id/mTestView"
 android:layout_width="500dp"
 android:layout_height="500dp"/>

<TextView android:text="그림에 대한설명"
 android:layout_width="100dp"
 android:layout_height="100dp"/>
</FrameLayout>

public class TestView extends View {
 
 //-------------------------------------
 //  생성자
 //-------------------------------------
    private Bitmap m_bitmap = null;

    public TestView(Context context, AttributeSet attrs) {
  super(context, attrs);
  
  setFocusable(true);
    }
    protected void onFinishInflate ()
    {
        int width, height;
        // 페인트 객체를 생성한다.
        m_paint = new Paint();
        m_paint.setAntiAlias(true);
        m_paint.setColor(Color.RED);
        // 선의 두께를 1로 한다.
        m_paint.setStrokeWidth(1);
        // 도형을 그릴때 내부에 색이 채워지지 않도록 속성을 설정한다.
        m_paint.setStyle(Paint.Style.STROKE);
       
  Display display = ((WindowManager) mContext.getSystemService (Context.WINDOW_SERVICE)).getDefaultDisplay();
  width = display.getWidth();  // View의 가로 폭
  height = display.getHeight() - 50;   // View의 세로 높이

  m_bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.color);
  m_bitmap = Bitmap.createScaledBitmap(m_bitmap, width, height, false);       
    }
   

}

이미지가 1020*700인데 500*500으로 보여줄려고 하는데 위와같이 하면 이미지가 모두 안나오고 원래이미지에서 500*500만 나옵니다

이미지가 짤리니다

이미지가

<com.TestView
 android:id="@+id/mTestView"
 android:layout_width="500dp"
 android:layout_height="500dp"/>

500*500에 모두 나올수 잇게 할려면 어떻게해야하나요?

 

헨씀히포 (3,660 포인트) 님이 2014년 2월 19일 질문
헨씀히포님이 2014년 2월 19일 수정

2개의 답변

0 추천
ImageView의 ScaleType을 이용하면 안되나요?
쎄미 (162,410 포인트) 님이 2014년 2월 19일 답변
<com.TestView
 android:id="@+id/mTestView"
 android:layout_width="500dp"
 android:layout_height="500dp"/>
여기에는 그런 옵션이 없습니다
커스텀 말고 그냥 이미지뷰를 쓰라는 뜻이었습니다
커스텀 안에서 하는일이 있어서요 선택한 색상을 얻어오는 게 잇어서 이미지뷰를 사용하지 못하고 있습니다
0 추천

width = display.getWidth();  // View의 가로 폭
height = display.getHeight() - 50;   // View의 세로 높이

에서

display.getWidth() 나 display.getHeight() 는 윈도우의 사이즈지 

View의 사이즈는 아닙니다.

 

onFinishInflate 보다는 onLayout에서 사이즈가 정해 질때

구현해 주시는게 좋겠네요.

 

코딩인헬 (12,150 포인트) 님이 2014년 2월 19일 답변
onLayout안에서 해봤는데 속도가 너무 늦습니다 흐흫흐
...