我是新手机开发人员,特别是Xamarin,所以请原谅我,如果这有点基本,但我一直在搜索谷歌,并找不到这个好的答案...在ListView中选择ImageCell时的材质设计动画
我有一个MasterDetail页面,我的应用程序的主导航方案设置为主,并通过反射对主对象的TargetView属性绑定的详细页面进行加载。基本上直接从Xamarin样品MasterDetail页,像这样:
public class MasterPageItem
{
public string Title { get; set; }
public string IconSource { get; set; }
public Type TargetType { get; set; }
}
public MainMenu()
{
InitializeComponent();
var masterPageItems = new List<MasterPageItem>();
masterPageItems.Add(new MasterPageItem
{
Title = "Events",
IconSource = "Icon.png",
TargetType = typeof(MainPage)
});
masterPageItems.Add(new MasterPageItem
{
Title = "Categories",
IconSource = "Icon.png",
TargetType = typeof(Categories)
});
masterPageItems.Add(new MasterPageItem
{
Title = "Tags",
IconSource = "Icon.png",
TargetType = typeof(Tags)
});
listView.ItemsSource = masterPageItems;
}
void OnItemSelected(object sender, SelectedItemChangedEventArgs e)
{
var item = e.SelectedItem as MasterPageItem;
if (item != null)
{
listView.SelectedItem = null;
var mdPage = this.Parent as MasterDetail;
mdPage.IsPresented = false;
mdPage.Detail = new NavigationPage((ContentPage)Activator.CreateInstance(item.TargetType))
{
BarBackgroundColor = Color.FromHex("1976D2")
};
}
}
的XAML页面:
<ContentPage.Content>
<StackLayout VerticalOptions="FillAndExpand">
<ListView x:Name="listView" VerticalOptions="FillAndExpand" SeparatorVisibility="None" ItemSelected="OnItemSelected">
<ListView.ItemTemplate>
<DataTemplate>
<ImageCell ImageSource="{Binding IconSource}" Text="{Binding Title}" TextColor="White" Tapped="OnCellTapped" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
</StackLayout>
</ContentPage.Content>
我的目标是尝试在的新闻添加一个简单的材料设计型背景色动画ListView项目(例如:http://thecodeplayer.com/walkthrough/ripple-click-effect-google-material-design)。
它看起来像ImageCell类没有实现IAnimatable,所以绑定到该元素上的Tapped事件将无济于事,而ListView类本身似乎没有实现任何类型的Item或Row元素本身可以动画。我看到的唯一选择是动画整个ListView,我实际上可以做,但显然不是我想要实现的。
那里似乎还没有一个SelectedItemBackgroundColor属性或ListView本身的等价物?我觉得我错过了一些重要的事情,比如说这不能跨平台完成,并且必须是平台特定的,但这似乎是Xamarin中的一个重大疏漏.Forms,不是吗?
我有几个其他ListViews我想使用类似的用户体验,所以任何帮助将不胜感激。