[Java] ByteBuffer로부터 unsigned int 읽기

자바는 그 창시자로부터 데이터 타입으로 unsigned가 의미가 없다는 판단에 의해 부호가 없는 정수형 데이터 타입을 지원하지 않는 우(?)를 범하였으니… 간혹 자바를 사용하는 개발자가 개고생인지라.. 개고생을 줄이고자 기록을 남깁니다.

long v = ((long)outBb.getInt() & 0xffffffffL);

이 얼마나 비효율의 극악을 달리는 코드인가? unsigned 값의 의도는 음수값을 가지지 않을 경우 적은 바이트수만을 활용하여 그 2배에 해당하는 양(+)의 범위 값을 가지도록 하고자 하는 선의인데, 4바이트의 unsigned int를 저장하기 위해 8바이트를 사용하고 있는 형국입니다.

자바 언어의 창시자인 제임스 고슬링님은 뭐하고 사시는지 살짝 궁금해지네요.. 소녀시대 팬이라는 소문도 있던데.. @_@

[Android] View의 Background에 라운딩 상자(Rounding Box) 넣기

View의 배경에 라운딩 박스를 넣어 UI를 깔끔하게 정리해야 할때가 있습니다. 대표적인 경우로, TextView에 단순히 문자열만을 표시하지 않고 라운딩 박스를 둘러 넣어 주면 뭔가 부족한 UI가 개선됨을 느낄 수 있습니다. 아래가 이러한 예에 대해 실제 적용한 화면입니다.

사용자 삽입 이미지

아래는 이처럼 View의 배경에 라운딩 박스를 넣기 위해 View의 background 속성을 지정한 xml 단 코드입니다.

<TextView 
    android:background="@drawable/bg_gis_result_items_count"
    android:id="@+id/tbResultItemCount"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="right"
    android:textColor="#ffffff"
    android:textSize="32px"
    android:layout_marginBottom="35px"
    android:layout_marginLeft="60px"
    android:layout_marginRight="120px"
    android:text="검색 결과 0 건" />

위의 코드를 보면, 라운딩 박스를 적용한 뷰는 TextView이고 배경을 지정하기 위해 android:background 속성에 @drawable/bg_gis_result_items_count를 지정하였습니다. 이제 이 @drawable/bg_gis_result_items_count의 코드를 보면 아래와 같습니다.

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

    <padding 
        android:left="45px"
        android:top="15px"
        android:right="45px"
        android:bottom="15px" /> 

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

배경은 drawable 타입으로 지정할 수 있으며 라운딩 박스는 도형(shape)으로 지정합니다. 도형은 자신의 색상값을 지정할 수 있고 라운딩 처리는 이 도형의 corners를 통해 지정할 수 있습니다.