반투명 Action Bar 화면
Action Bar 뜨고 싶어요!!
배경의 이미지를 더 투과하고 싶어요!!!
개시하다
그래서 희미한 욕망이지만 그것도 방법이다.
최종 목표
이런 느낌을 원해요.
Action Bar를 투명하게 만드는 이론
style.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyHoloLight" parent="android:Theme.Holo.Light">
<item name="android:windowActionBarOverlay">true</item>
</style>
</resources>
Simple is Best!
Action Bar를 화면 아래로 가져가는 이론(?)
via http://visible-true.blogspot.jp/2012/02/android.html
Utils.java
public class Utils {
private static final String TAG = Utils.class.getSimpleName();
/**
* ActionBarを画面下部に表示する
*
* @param activity
*/
public final static void actionBarUpsideDown(Activity activity) {
View root = activity.getWindow().getDecorView();
View firstChild = ((ViewGroup) root).getChildAt(0);
if (firstChild instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) firstChild;
List<View> views = findViewsWithClassName(root,
"com.android.internal.widget.ActionBarContainer");
if (!views.isEmpty()) {
for (View vv : views) {
viewGroup.removeView(vv);
}
for (View vv : views) {
viewGroup.addView(vv);
}
}
} else {
Log.e(TAG, "first child is not ViewGroup.");
}
}
private static List<View> findViewsWithClassName(View v, String className) {
List<View> views = new ArrayList<View>();
findViewsWithClass(v, className, views);
return views;
}
@SuppressWarnings("unchecked")
private static <T extends View> void findViewsWithClass(View v, String clazz, List<T> views) {
if (v.getClass().getName().equals(clazz)) {
views.add((T) v);
}
if (v instanceof ViewGroup) {
ViewGroup g = (ViewGroup) v;
for (int i = 0; i < g.getChildCount(); i++) {
findViewsWithClass(g.getChildAt(i), clazz, views);
}
}
}
private Utils() {
// ignore
}
}
순조롭지 않다!!
위의 두 개를 조합하면 Utils #action Bar Upside Down () 으로 Action Bar를 떼어낼 수 없습니다.
window Action BarOverlay의 지정에 따라 View 구조에 변화가 있습니까?
그럼 간단하게 Action Bar 배경에서 α를 설정하도록 하겠습니다.
style.xml
<style name="Theme.MainActivity.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">#88ffffff</item>
</style>
main_activity.xml
<RelativeLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_1920x1080" />
결실
(3·) 있지~?
지정된 배경 이미지의 일부가 다릅니다.
위에는 메인이에요.activity.xml의 루트 요소에 배경 그림을 설정합니다.
그러나 Action Bar가 표시되면 이 노선 레이아웃의 높이는 Action Bar의 높이에서 뺀 값입니다.
따라서 실제 Action Bar는 위에서 지정한 대로 반투명하지만 mainactivity.xml에서 지정한 배경 그림이 Action Bar 아래에 그려지지 않았기 때문에 Action Bar의 배경은 흰색으로 유지됩니다.
Activity로 배경 이미지 다시 설정하기
MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity.xml);
getWindow().getDecorView().setBackgroundResource(R.drawable.bg_1920x1080);
그런 다음 위의 최종 목표처럼 Action Bar를 표시할 수 있습니다.
Reference
이 문제에 관하여(반투명 Action Bar 화면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuchinashi_r/items/254d8c7a9d5c58c362b8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="MyHoloLight" parent="android:Theme.Holo.Light">
<item name="android:windowActionBarOverlay">true</item>
</style>
</resources>
public class Utils {
private static final String TAG = Utils.class.getSimpleName();
/**
* ActionBarを画面下部に表示する
*
* @param activity
*/
public final static void actionBarUpsideDown(Activity activity) {
View root = activity.getWindow().getDecorView();
View firstChild = ((ViewGroup) root).getChildAt(0);
if (firstChild instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) firstChild;
List<View> views = findViewsWithClassName(root,
"com.android.internal.widget.ActionBarContainer");
if (!views.isEmpty()) {
for (View vv : views) {
viewGroup.removeView(vv);
}
for (View vv : views) {
viewGroup.addView(vv);
}
}
} else {
Log.e(TAG, "first child is not ViewGroup.");
}
}
private static List<View> findViewsWithClassName(View v, String className) {
List<View> views = new ArrayList<View>();
findViewsWithClass(v, className, views);
return views;
}
@SuppressWarnings("unchecked")
private static <T extends View> void findViewsWithClass(View v, String clazz, List<T> views) {
if (v.getClass().getName().equals(clazz)) {
views.add((T) v);
}
if (v instanceof ViewGroup) {
ViewGroup g = (ViewGroup) v;
for (int i = 0; i < g.getChildCount(); i++) {
findViewsWithClass(g.getChildAt(i), clazz, views);
}
}
}
private Utils() {
// ignore
}
}
style.xml
<style name="Theme.MainActivity.ActionBar" parent="@android:style/Widget.Holo.ActionBar">
<item name="android:background">#88ffffff</item>
</style>
main_activity.xml
<RelativeLayout
android:id="@+id/rootLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/bg_1920x1080" />
결실
(3·) 있지~?
지정된 배경 이미지의 일부가 다릅니다.
위에는 메인이에요.activity.xml의 루트 요소에 배경 그림을 설정합니다.
그러나 Action Bar가 표시되면 이 노선 레이아웃의 높이는 Action Bar의 높이에서 뺀 값입니다.
따라서 실제 Action Bar는 위에서 지정한 대로 반투명하지만 mainactivity.xml에서 지정한 배경 그림이 Action Bar 아래에 그려지지 않았기 때문에 Action Bar의 배경은 흰색으로 유지됩니다.
Activity로 배경 이미지 다시 설정하기
MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity.xml);
getWindow().getDecorView().setBackgroundResource(R.drawable.bg_1920x1080);
그런 다음 위의 최종 목표처럼 Action Bar를 표시할 수 있습니다.
Reference
이 문제에 관하여(반투명 Action Bar 화면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/kuchinashi_r/items/254d8c7a9d5c58c362b8
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
MainActivity.java
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_activity.xml);
getWindow().getDecorView().setBackgroundResource(R.drawable.bg_1920x1080);
그런 다음 위의 최종 목표처럼 Action Bar를 표시할 수 있습니다.
Reference
이 문제에 관하여(반투명 Action Bar 화면), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/kuchinashi_r/items/254d8c7a9d5c58c362b8텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)