Android 에서 인 스타 그램 과 유사 한 그 라 데 이 션 배경 효과 만 들 기


제 가 최근 프로젝트 에서 이 효 과 를 사용 해서 여러분 께 공유 해 드 리 겠 습 니 다.
https://github.com/zhaoweihaoChina/hnuplus
1.drawable 폴 더 에 그 라 데 이 션 색상 의 자원 을 만 듭 니 다.
color1.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <gradient
    android:startColor="#614385"
    android:endColor="#516395"
    android:angle="0"/>
</shape>
color2.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <gradient
    android:startColor="#5f2c82"
    android:endColor="#49a09d"
    android:angle="45"/>
</shape>
color3.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <gradient
    android:startColor="#4776E6"
    android:endColor="#8E54E9"
    android:angle="90"/>
</shape>
color4.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">
  <gradient
    android:startColor="#7141e2"
    android:endColor="#d46cb3"
    android:angle="135"/>
</shape>
2.위 에서 만 든 그 라 데 이 션 색상 의 애니메이션 시퀀스 를 만 들 고 animation 이 라 고 명명 합 니 다.list.xml,drawable 폴 더 에 넣 기

<?xml version="1.0" encoding="utf-8"?>
<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
  <item
    android:drawable="@drawable/color1"
    android:duration="10000" />
  <item
    android:drawable="@drawable/color2"
    android:duration="10000" />
  <item
    android:drawable="@drawable/color3"
    android:duration="10000" />
  <item
    android:drawable="@drawable/color4"
    android:duration="10000" />
</animation-list>
3.위 에 만들어 진 애니메이션 시퀀스 를 layot 배경 맨 위 view 에 적용 합 니 다.

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:orientation="vertical"
  android:background="@drawable/animation_list"
  android:id="@+id/container">
  <!-- Child Views -->
</LinearLayout>
4.액 티 비 티 에서 Animation Drawable 로 과도 효과 구현

LinearLayout container = (LinearLayout) findViewById(R.id.container);
AnimationDrawable anim = (AnimationDrawable) container.getBackground();
anim.setEnterFadeDuration(6000);
anim.setExitFadeDuration(2000);

//       : onResume           
@Override
protected void onResume() {
  super.onResume();
  if (anim != null && !anim.isRunning())
    anim.start();
}
   
//       : onPause           
@Override
protected void onPause() {
  super.onPause();
  if (anim != null && anim.isRunning())
    anim.stop();
}
상태 표시 줄 을 투명 하 게 설정(상태 표시 줄 제거)
values/styles.xml

<resources> 
  <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar" /> 
</resources>
values-v19/styles.xml

<resources> 
  <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:windowTranslucentStatus">true</item> 
  </style> 
</resources>
values-v21/styles.xml

<resources> 
  <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:statusBarColor">@android:color/transparent</item> 
  </style> 
</resources>
values-v23/styles.xml

<resources> 
  <style name="Theme.AppTheme.TranslucentStatusBar" parent="Theme.AppCompat.Light.NoActionBar"> 
    <item name="android:statusBarColor">@android:color/transparent</item> 
    <item name="android:windowLightStatusBar">true</item> 
  </style> 
</resources>

public class MainActivity extends AppCompatActivity { 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState);  
    //        
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      findViewById(android.R.id.content).setSystemUiVisibility( 
          View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); 
    } 
 
    setContentView(R.layout.activity_splash); 
  } 
} 
<activity 
  android:name=".MainActivity"  android:theme="@style/Theme.AppTheme.TranslucentStatusBar" />
총결산
위 에서 말 한 것 은 편집장 이 소개 한 안 드 로 이 드 에서 인 스타 그램 과 유사 한 그 라 데 이 션 배경 효 과 를 만 드 는 것 입 니 다.도움 이 되 셨 으 면 좋 겠 습 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.편집장 이 바로 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!

좋은 웹페이지 즐겨찾기