안드로이드 개발 질문/답변
(글 수 45,052)
public class AppWidget extends AppWidgetProvider{
LinearLayout layuot;
@Override
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds) {
// TODO Auto-generated method stub
super.onUpdate(context, appWidgetManager, appWidgetIds);
RemoteViews remoteViews;
ComponentName watchWidget;
layuot = (LinearLayout)this.layuot.findViewById(R.id.LinearLayout01);
Drawable alpha = layuot.getBackground();
alpha.setAlpha(10);
DateFormat format =
SimpleDateFormat.getTimeInstance(SimpleDateFormat.MEDIUM, Locale.getDefault());
remoteViews = new RemoteViews(context.getPackageName(), R.layout.main);
watchWidget = new ComponentName(context, AppWidget.class);
remoteViews.setTextViewText(R.id.widget_textview, format.format(new Date()));
appWidgetManager.updateAppWidget(watchWidget, remoteViews);
}
}
위 코드 처럼 AppWidget 코드에 LinearLayout을 등록하여 위젯에서 사용하는 배경에 투명도 조절을 하기 위해
Alpha값을 지정해 주었습니다. 그런데 컴파일 시 에러는 안나는데 위젯을 등록해 보면 알파값이 적용이 안되어 있습니다.
제 생각에는 등록해준 LinearLayout부터가 잘못된거 같은데 에뮬 화면에 등록되는 위젯의 배경을 투명하게 만들려면
어떤 식으로 작성을 해야 되는지 조언을 구합니다.
2010.08.03 01:04:46
그렇다면 setBackground() 에 바로 0x0affffff 같은 식으로
alpha 값을 가진 색을 지정해 주시는건 어떨까요? 그럼 투명도 조절시에 코드도 간단하고,
setBackground 의 경우 ui 에 잘 먹히더라구요.
alpha 값을 가진 색을 지정해 주시는건 어떨까요? 그럼 투명도 조절시에 코드도 간단하고,
setBackground 의 경우 ui 에 잘 먹히더라구요.
2010.08.03 11:00:08
예를들어서 LinearLayout 가 있다고 치면,
layout.setBackground(0xAAFFFFFF);
이렇게 해주면 알파값은 AA
컬러값은 FFFFFF 가 되게 됩니다.
여기서 앞에 두개 알파값만 바꿔서 지정해 주는거죠.
알파값은 0 에서 255 까지 입니다.
00 ~ FF 가 되겠죠.
2010.08.03 11:05:23
아 그렇군요 그런데 지금 문제의 핵심이 사용중인 레이아웃에 아예 적용이 안되고 있습니다.
어떠한 값을 넣든 적용이 안되서 계속 검색과 api를 찿고 있지만 마땅히 쓸만한것을 못찿고 있습니다.
제 생각에는 layout에 적용 시킬려면 Activity를 상속 받아서 사용해야 되는거 같은데 현재 Activity를 상속 받지 못해 생기는 문제 같습니다.
다른 예제를 만들어 사용해 보면 잘 동작 하는데 appwidget 예제에 적용 할려고 하니 컴파일 오류는 없으나 layout에 alpha값이 적용이
안되고 있어서 계속 그 문제를 찿고 있는 중입니다
답변 감사합니다(__)
<resources>
<color name="transparent_color">#00000000</color>
</resources>
이걸 color.xml 로 만들어서 넣어놓고
최상위 레이아웃의 배경을 R.color.transparent_color 로 선언해서 써보세요.