나는 이미지의 간단한 슬라이드 쇼를 보여주는 간단한 홈 화면 위젯을 만들고 있습니다. 이미지를 전환 할 때마다 간단히 다음 이미지를 1.5 초씩 표시하는 AdapterViewFlipper
을 사용하고 있습니다. 이것은 잘 작동하지만 한 이미지에서 다른 이미지로 전환하는 동안 페이드 아웃 및 페이드 인 (거의 전환 애니메이션과 유사)처럼 보이며 비활성화하려고합니다. 그렇게하려면 어떻게해야합니까? 레이아웃 XML에서 애니메이션을 비활성화했지만 도움이되지 않습니다. 당황 스럽다.AppWidget에서 AdapterViewAdapter를 사용하면 왜 깜박입니까?
여기 플리퍼를 포함하는 내 레이아웃입니다 :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_layout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="@drawable/widget_frame"
android:orientation="vertical"
android:textAlignment="gravity" >
<AdapterViewFlipper
android:id="@+id/image_flipper"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:layout_below="@+id/widget_icon"
android:animateLayoutChanges="false"
android:autoStart="true"
android:flipInterval="1500" >
</AdapterViewFlipper>
</LinearLayout>
가 어댑터에 appwidget, 부하, 나는 플리퍼를 바인딩 할 때 :
Intent ittSlides = new Intent(ctxContext, SlideService.class);
ittSlides.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, intInstance);
ittSlides.setData(Uri.fromParts("content", String.valueOf(new Random().nextInt()), null));
ittSlides.putExtra("data", strContent);
RemoteViews remView = new RemoteViews(ctxContext.getPackageName(), R.layout.widget);
remView.setRemoteAdapter(R.id.image_flipper, ittSlides);
AppWidgetManager.getInstance(ctxContext).updateAppWidget(intInstance, remView);
.. 그리고 여기에 그 힘이 내 실제 어댑터입니다.
public class SlideFactory implements RemoteViewsFactory {
private JSONArray jsoImages;
private final Context ctxContext;
private RemoteViews remView;
public SlideFactory(Context ctxContext, Intent ittIntent) {
remView = new RemoteViews(ctxContext.getPackageName(), R.layout.image);
this.ctxContext = ctxContext;
try {
jsoImages = new JSONArray(ittIntent.getStringExtra("data"));
} catch (JSONException e) {
throw new RuntimeException(e);
}
}
@Override
public RemoteViews getViewAt(int intPosition) {
try {
remView.setImageViewUri(R.id.dopper_image, Uri.parse(jsoImages.getString(intPosition)));
} catch (final JSONException e) {
Log.e("SlideFactory", "Unknown error encountered", e);
BugSenseHandler.sendException(e);
} catch (final Exception e) {
Log.e("SlideFactory", "Unknown error encountered", e);
BugSenseHandler.sendException(e);
}
return remView;
}
...
...
...
}
아시다시피 어댑터에는 특별한 것이 없습니다. 디스크에서 이미지를 읽고 레이아웃으로 설정하는 것입니다. AdapterViewFlipper
감사합니다. 곧 그 현상금을 얻을 수 있습니다. 이것은 내가 만난 가장 까다로운 일 중 하나였습니다. –
알았어. 감사! – juniano