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

layout.xml 을 사용하는 뷰를 수정후 리턴이 가능한가요??

0 추천
일단 사용목적은,

 

구글 맵 커스텀 마커이구요.

마커를 만들기 위해서 자바에서 손보기가 좀 필요한데.

xml을 이용하고, decodeResoruce 를 사용해서 자바에서 불러 온 후

마커에 icon set을 해주고 싶은데요.

 

그러기 위해선

1. xml파일을 읽어와서 그 안의 내용을 수정을 해주고 뷰를 리턴한다.

 - 음.. 이건 좀 햇갈릴 수 있겠는데요. 보통 findviewbyid 로 TextView 를 찾는다던가 하잖아요?

   contentView 에서요. 그럼 이런식으로 제가 원하는 부분을 수정하고 뷰를 반환해주고 싶네요.

2. 리턴된 뷰를 decode해서 bitmap 으로 리턴한다.

 - markerOption에서 icon을 변형하고싶으면 디스크립터로 가장많은 예제가 있어 그 방법을 사용중인데.

   그게 비트맵을 요구하고 있어서 결국 bitmap으로 리턴을 받아야하거든요.

 

 

정리

xml파일을 정의하여 수정한다.(자바코드에서)

정의한 xml을(수정이 되어 있겠죠?) 리턴받아 decode해서 bitmap으로 다시 리턴해준다.

정도 되겠는데 문제는 저 중간과정(수정된 뷰를 리턴)을 어떻게해야하는지를 잘 모르겟습니다.

 

제가 알아봐야 할 키워드나 혹은 팁이 있으시다면 알려주시면 감사하겠습니다 ( _ _)
익명사용자 님이 2015년 10월 19일 질문

1개의 답변

0 추천
 
채택된 답변

자답입니다.

 

private Bitmap setIcons(String title, String contents)
    {
        LayoutInflater inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
        v = inflater.inflate(R.layout.cargo_map_marker, null);

        if (v.getMeasuredHeight() <= 0) {

            v.measure(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);
            TextView tvTitle = (TextView)v.findViewById(R.id.cargoMap_info_title);
            TextView tvContents = (TextView)v.findViewById(R.id.cargoMap_info_contents);
            tvTitle.setText(title);
            tvContents.setText(contents);
            Bitmap b = Bitmap.createBitmap(v.getMeasuredWidth(), v.getMeasuredHeight(), Bitmap.Config.ARGB_8888);
            Canvas c = new Canvas(b);
            v.layout(0, 0, v.getMeasuredWidth(), v.getMeasuredHeight());
            v.draw(c);
            return b;
        }
        TextView tvTitle = (TextView)v.findViewById(R.id.cargoMap_info_title);
        TextView tvContents = (TextView)v.findViewById(R.id.cargoMap_info_contents);
        tvTitle.setText(title);
        tvContents.setText(contents);
        Bitmap b = Bitmap.createBitmap( v.getLayoutParams().width, v.getLayoutParams().height, Bitmap.Config.ARGB_8888);
        Canvas c = new Canvas(b);
        v.layout(v.getLeft(), v.getTop(), v.getRight(), v.getBottom());
        v.draw(c);
        return b;
    }

 

익명사용자 님이 2015년 10월 19일 답변
...