我是新的Xamarin形式。在Android上,我使用ViewPager加载图像,用户在页面上滑动。由于Android具有适配器,因此不会立即初始化所有视图。现在我想转到Xamarin表格并看到有Carousel Page。它是否与ViewPager的行为相同,只根据需要加载页面?
答案 0 :(得分:1)
Xamarin.Forms
CarouselPage
不支持UI虚拟化(回收)。
初始化性能和内存使用量可能是一个问题,具体取决于页面/子项的数量。
要使用的新首选VisualElement
是基本取代CarouselView
的{{1}},并且已针对每个平台进行了优化。
Nuget:Xamarin.Forms.CarouselView(目前处于预发布状态)
仅供参考:我刚刚查看了Android渲染器(CarouselPage
)的来源,它确实实现了CarouselViewRenderer.cs
...
答案 1 :(得分:1)
如果阻止在页面的构造函数中调用InitializeComponent,则可能会对加载时间产生影响。
public interface CarouselChildPage {
void childAppearing();
void childDissapearing();
}
public partial class MainPage : CarouselPage {
CarouselPageChild previousPage;
protected override void OnCurrentPageChanged() {
base.OnCurrentPageChanged();
if (previousPage != null)
previousPage.childDissapearing();
int index = Children.IndexOf(CurrentPage);
CarouselPageChild childPage = Children[index] as CarouselPageChild;
childPage.childAppearing();
previousPage = childPage;
}
}
public partial class FriendsListPage : ContentPage, CarouselPageChild {
bool isLoaded = false;
public FriendsListPage() {
// Remove Initialise Component Here
}
public void childAppearing() {
Logger.log("My Appearing");
if (!isLoaded){
InitializeComponent();
isLoaded = true;
}
}
public void childDissapearing() {
Logger.log("My Disappearing");
}
}