さて、私は Muzei Live Wallpaper オープンソースのRomanNurikによるアプリのルックアンドフィールを複製しようとしています。
(ここで彼のGitHubリポジトリをチェックしてください https://github.com/romannurik/muzei/ )
アプリが起動すると、微妙なsvgパストレーシングアニメーションと、バックグラウンドで実行されるKenBurnsエフェクトがあります。
アクティビティがステータスバーとナビゲーションバーに流れ込んでいることがわかります。
背景アニメーションを作成することはできましたが、下の2番目のGIFに示すようにアクティビティを全画面表示にする方法を理解できませんでした
このアクティビティをフルスクリーンにする/ステータスバーとナビゲーションバーにブリードするのに助けが必要です。
これが私が達成できたことです
これは私が実装したいものです
これが私のコードです
MainActivity.Java
package devexchanges.info.kenburnview;
import Android.os.Bundle;
import Android.support.v7.app.AppCompatActivity;
import Android.view.Menu;
import Android.view.MenuInflater;
import Android.view.MenuItem;
import Android.view.Window;
import Android.view.WindowManager;
import Android.view.animation.AccelerateDecelerateInterpolator;
import Android.widget.Toast;
import com.flaviofaria.kenburnsview.KenBurnsView;
import com.flaviofaria.kenburnsview.RandomTransitionGenerator;
import com.flaviofaria.kenburnsview.Transition;
public class MainActivity extends AppCompatActivity {
private KenBurnsView kenBurnsView;
private boolean isPlay = true;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
kenBurnsView = (KenBurnsView) findViewById(R.id.image);
AccelerateDecelerateInterpolator ACCELERATE_DECELERATE = new AccelerateDecelerateInterpolator();
RandomTransitionGenerator generator = new RandomTransitionGenerator(11000, ACCELERATE_DECELERATE);
kenBurnsView.setTransitionGenerator(generator); //set new transition on kenburns view
kenBurnsView.setTransitionListener(onTransittionListener());
}
private KenBurnsView.TransitionListener onTransittionListener() {
return new KenBurnsView.TransitionListener() {
@Override
public void onTransitionStart(Transition transition) {
//Toast.makeText(MainActivity.this, "start", Toast.LENGTH_SHORT).show();
}
@Override
public void onTransitionEnd(Transition transition) {
//Toast.makeText(MainActivity.this, "end", Toast.LENGTH_SHORT).show();
}
};
}
}
activity_main.xml
<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"
tools:context=".MainActivity">
<com.flaviofaria.kenburnsview.KenBurnsView
Android:id="@+id/image"
Android:layout_width="match_parent"
Android:layout_height="match_parent"
Android:src="@drawable/saigon"
Android:layout_alignParentTop="true"
Android:layout_alignParentLeft="true"
Android:layout_alignParentStart="true" />
<Button Android:background="@drawable/circle_button"
Android:layout_height="@dimen/intro_activate_button_size"
Android:layout_width="@dimen/intro_activate_button_size"
Android:text="ACTIVATE"
Android:textAllCaps="true"
Android:fontFamily="sans-serif-condensed"
Android:textStyle="bold"
Android:textSize="18dp"
Android:textColor="#333"
Android:id="@+id/activate_muzei_button"
Android:layout_alignParentBottom="true"
Android:layout_centerHorizontal="true"
Android:layout_marginBottom="103dp"
Android:elevation="2dp" />
これをstyle.xmlに追加するだけです。
<item name="windowNoTitle">true</item>
<item name="windowActionBar">false</item>
<item name="Android:windowFullscreen">true</item>
これをonCreate()
メソッドに追加するだけです。
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
アクティビティをフルスクリーンにするには、これをマニフェストに入れます。
<activity Android:name=".ActivityName"
Android:label="@string/app_name"
Android:theme="@Android:style/Theme.NoTitleBar.Fullscreen"/>
AppCompatアクティビティを使用している場合は、@ style/Theme.AppCompat.Light.NoActionBarを使用してください
<activity Android:name=".view.activity.SplashActivity"
Android:theme="@style/Theme.AppCompat.Light.NoActionBar">
<intent-filter>
<action Android:name="Android.intent.action.MAIN"/>
<category Android:name="Android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
Kotlin:プログラムでAPI 21用:onCreate()内に配置
@TargetApi(21)
window.statusBarColor = Color.TRANSPARENT
プログラムでそれを行うことができます:
public class ActivityName extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// remove title
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.main);
}
}
このコンテンツを読む: Androidのフルスクリーンアクティビティ?
このコードをアクティビティonCreate()に追加するだけです
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);