안드로이드 화면 전환시 시간 지연


앱 실행시 메인화면 로딩(1.5초)이나 화면전환시 약간 느린감이 있습니다.

아래 코드와 같이 레이아웃 백그라운드에 이미지도 넣어주고

프래그먼트에도 이미지가 두개나 들어가 있습니다.

찾아보니 비트맵 이용해서 이미지 파일의 용량을 줄이는거 같은데

만약, 비트맵으로 전환한다면 xml에서 @drawable 대신 자바 코드에서 직접 뷰에 이미지를 붙여야하나요

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/intro"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.example.candle.xxxxx.MainActivity">

    <ImageView
        android:id="@+id/btn_intro"
        android:layout_width="70dp"
        android:layout_height="70dp"
        android:layout_alignParentBottom="true"
        android:layout_centerHorizontal="true"
        android:layout_marginBottom="110dp"
        android:src="@drawable/btn_intro" />

    <FrameLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentEnd="true"
        android:layout_alignParentRight="true" />

</RelativeLayout>
  • 2016년 06월 01일에 수정됨
    모바일 데이터 베이스를 만드는 yet another nit picker.
  • 2016년 03월 16일에 작성됨
    Software Engineer

조회수 558


1 답변


좋아요
5
싫어요
채택취소하기

동적 이미지 로딩을 말씀하시는 것 같습니다. 동적으로 이미지를 로딩하면 처음 켤때 이미지 로딩이 없으니 그 부분에서는 이점이 있습니다.

하지만 이미지가 읽어질 때까지 해당 부분이 비어보일 수는 있습니다. 이런 경우 로딩이 되는 동안 작은 이미지를 보여주거나 적절한 배경색을 깔아서 허전하지 않게 보이는 방법등이 있을 것 같습니다.

아래와 같이 드로어블을 동적으로 보여주는 방법도 있을테고요.

Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable. btn_intro);
((ImageView) findViewById(R.id. btn_intro)).setImageBitmap(bitmap);

인풋 스트림을 통해 가져오는 방법도 있습니다.

InputStream inputStream  = new ByteArrayInputStream(decoded);
Bitmap bitmap  = BitmapFactory.decodeStream(inputStream);
((ImageView) findViewById(R.id. btn_intro)).setImageBitmap(bitmap);

최근에는 외부 라이브러리를 이용해서 처리하는 경우도 많습니다. 다음 두 라이브러리를 참고하세요.

  • Glide (과거에는 Picasso를 많이 썼는데 이제는 사용법이 유사한 Glide를 많이 씁니다.)
  • Fresco
  • 2016년 03월 16일에 작성됨
    모바일 데이터 베이스를 만드는 yet another nit picker.

  • 감사합니다! 화면 전환 속도가 눈에 띄게 빨라졌습니다^^    김선우   2016.3.18 09:44     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close