2016-08-02 67 views
0

我是新手机开发人员,特别是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我想使用类似的用户体验,所以任何帮助将不胜感激。

回答

0

我刚试过这个,它看起来像使用AppCompat时默认提供了连锁效应。 MasterDetailPage样本尚未更新,这可能是为什么它不在那里工作。要将AppCompat和Material设计添加到Forms Android项目中,请查看此guide