티스토리 뷰

SurfaceView xml에 특정부분만 추가하는 방법입니다.

 

SurfaceView 와 관련된 기본 내용은 아래 글을 참고하세요.

[Android] SurfaceView 기본 - https://injunech.tistory.com/326

 

[Android] SurfaceView 기본

SurfaceView는 View를 상속받는 클래스이다. 일반 View는 onDraw 메소드를 시스템에서 자동으로 호출해줌으로써 화면을 그린다. 그래서 화면에 늦게 그려질 수도 있다. SurfaceView는 그리기를 시스템에 맡기는 것..

injunech.tistory.com

 

아래와 같은 SurfaceView를 특정 View 에 일부분만 추가 하고 싶은 경우입니다.

MySurfaceView.java

public class MySurfaceView extends SurfaceView implements SurfaceHolder.Callback {
  ....
}

 

res/layout/main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_bg"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:gravity="center" >
    
    <RelativeLayout ...>
    <RelativeLayout ...>
    <RelativeLayout ...>
    
    <com.example.work.MySurfaceView
        android:id="@+id/MySurfaceView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@color/transparent"/>
    
    <RelativeLayout ...>
    <RelativeLayout ...>
    <RelativeLayout ...>

</LinearLayout>

위와 같이 Layout 설정 사이에 원하는 곳에 SurfaceView 값을 넣어 주면 됩니다.

 

MainActivity.java

public class MainActivity extends AppCompatActivity {
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //SurfaceView background set transparent
        MySurfaceView sfvTrack = (MySurfaceView)findViewById(R.id.MySurfaceView);
        sfvTrack.setZOrderOnTop(true);    // necessary
        SurfaceHolder sfhTrackHolder = sfvTrack.getHolder();
        sfhTrackHolder.setFormat(PixelFormat.TRANSPARENT);
    }
}

SurfaceView를 포함한 xml layout 을 View에 설정.

SurfaceView 의 배경을 투명하게 하고 싶은 경우에는 setContentView 아래의 코드 추가하면 됩니다.

 

 

댓글

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음



Total
Today
Yesterday
최근에 달린 댓글