Skip to content

Commit

Permalink
version 1.3.0
Browse files Browse the repository at this point in the history
  • Loading branch information
Tlaster committed Apr 12, 2016
1 parent d1df1b1 commit ac553c2
Show file tree
Hide file tree
Showing 30 changed files with 349 additions and 652 deletions.
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -210,3 +210,6 @@ FakesAssemblies/
GeneratedArtifacts/
_Pvt_Extensions/
ModelManifest.xml
/AnimateRaw/BundleArtifacts
/AnimateRaw/_language-zh-hans.appx
/AnimateRaw.Shared/XamarinInsights.cs
4 changes: 3 additions & 1 deletion AnimateRaw.Android/Activity/AboutActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,19 @@
using Android.Views;
using Android.Widget;
using Android.Support.V7.App;
using AnimateRaw.Android.Common.Helpers;

namespace AnimateRaw.Android.Activity
{
[Activity(Label = "About")]
[Activity(Label = "About", Theme = "@style/AppTheme.NoActionBar")]
public class AboutActivity : AppCompatActivity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Layout.AboutPage);
var toolbar = FindViewById<global::Android.Support.V7.Widget.Toolbar>(Resource.Id.AboutToolbar);
((LinearLayout.LayoutParams)toolbar.LayoutParameters).SetMargins(0, StatusBarHelper.GetStatusBarHeight(this), 0, 0);
SetSupportActionBar(toolbar);
SupportActionBar.Title = "About";
}
Expand Down
18 changes: 8 additions & 10 deletions AnimateRaw.Android/Activity/DetailActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -14,10 +14,12 @@
using Android.Support.V7.Widget;
using Android.Support.V7.App;
using Android.Util;
using AnimateRaw.Shared;
using AnimateRaw.Android.Common.Helpers;

namespace AnimateRaw.Android
{
[Activity(Label = "Detail")]
[Activity(Label = "Detail", Theme = "@style/AppTheme.NoActionBar")]
public class DetailActivity : AppCompatActivity
{
private double _id;
Expand All @@ -32,6 +34,7 @@ protected override async void OnCreate(Bundle savedInstanceState)
_id = Intent.Extras.GetDouble("id");
SetContentView(Resource.Layout.MainPage);
var toolbar = FindViewById<global::Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
((LinearLayout.LayoutParams)toolbar.LayoutParameters).SetMargins(0, StatusBarHelper.GetStatusBarHeight(this), 0, 0);
SetSupportActionBar(toolbar);
SupportActionBar.Title = _name;
_exRecyclerView = FindViewById<ExRecyclerView>(Resource.Id.MainPageRecyclerView);
Expand All @@ -43,23 +46,18 @@ protected override async void OnCreate(Bundle savedInstanceState)
_exRecyclerView.ViewLayoutManager = new GridLayoutManager(this, heightm > widthm ? 2 : 3);
_refresher = FindViewById<ScrollChildSwipeRefreshLayout>(Resource.Id.MainPageRefresher);
_refresher.SetColorSchemeResources(Resource.Color.MediumVioletRed);
_refresher.Refresh += refresher_Refresh;
_refresher.Refresh += async delegate { await Refresh(); };
_refresher.Post(() => _refresher.Refreshing = true);
await Refresh();
}

private async void refresher_Refresh(object sender, EventArgs e)
{
await Refresh();
}


private async Task Refresh()
{
try
{
using (var client = new HttpClient())
{
var jsstr = await client.GetStringAsync($"http://oneechan.moe/api/detail?id={_id}");
var jsstr = await client.GetStringAsync($"http://oneechan.moe/api/detail?id={_id}&prefLang={LanguageHelper.PrefLang}");
var list = (from item in (JArray)((JObject)JsonConvert.DeserializeObject(jsstr))["SetList"]
select new AnimateSetModel
{
Expand Down Expand Up @@ -87,7 +85,7 @@ private void Ada_ItemClick(object sender, int e)
try
{
using (var client = new HttpClient())
client.GetStringAsync($"http://oneechan.moe/api/detail?id={_id}&filename={item.FileName}");
client.GetStringAsync($"http://oneechan.moe/api/detail?id={_id}&filename={item.FileName}&prefLang={LanguageHelper.PrefLang}");
}
catch
{
Expand Down
44 changes: 13 additions & 31 deletions AnimateRaw.Android/Activity/MainActivity.cs
Original file line number Diff line number Diff line change
Expand Up @@ -19,10 +19,13 @@
using Android.Support.V7.Widget;
using Android.Support.V7.App;
using AnimateRaw.Android.Activity;
using Java.Util;
using AnimateRaw.Shared;
using AnimateRaw.Android.Common.Helpers;

namespace AnimateRaw.Android
{
[Activity(Label = "Animate Raw", MainLauncher = true, Icon = "@drawable/icon")]
[Activity(Label = "Animate Raw", MainLauncher = true, Icon = "@drawable/icon", Theme = "@style/AppTheme.NoActionBar")]
public class MainActivity : AppCompatActivity
{
private ExRecyclerView _recyclerView;
Expand All @@ -31,6 +34,7 @@ public class MainActivity : AppCompatActivity
private int _page = 0;
private bool _hasMore = true;
private LinearLayoutManager _layoutManager;
private string _serverLink => $"http://oneechan.moe/api/list?page={_page++}&prefLang={LanguageHelper.PrefLang}";

protected override async void OnCreate(Bundle bundle)
{
Expand All @@ -40,19 +44,19 @@ protected override async void OnCreate(Bundle bundle)
base.OnCreate(bundle);
SetContentView(Resource.Layout.MainPage);
var toolbar = FindViewById<global::Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar);
((LinearLayout.LayoutParams)toolbar.LayoutParameters).SetMargins(0, StatusBarHelper.GetStatusBarHeight(this), 0, 0);
SetSupportActionBar(toolbar);
SupportActionBar.Title = "Animate Raw";
_recyclerView = FindViewById<ExRecyclerView>(Resource.Id.MainPageRecyclerView);
_recyclerView.OnScroll += recyclerView_OnScroll;
_layoutManager = new LinearLayoutManager(this);
_recyclerView.ViewLayoutManager = _layoutManager;
_recyclerView.LoadMore += (sender, e) => LoadMore();
_refresher = FindViewById<ScrollChildSwipeRefreshLayout>(Resource.Id.MainPageRefresher);
_refresher.SetColorSchemeResources(Resource.Color.MediumVioletRed);
_refresher.Refresh += refresher_Refresh;
_refresher.Refresh += async delegate { await Refresh(); };
_refresher.Post(() => _refresher.Refreshing = true);
await Refresh();
}

public override bool OnOptionsItemSelected(IMenuItem item)
{
switch (item.ItemId)
Expand All @@ -63,27 +67,8 @@ public override bool OnOptionsItemSelected(IMenuItem item)
default:
break;
}

return base.OnOptionsItemSelected(item);
}
private void recyclerView_OnScroll(object sender, OnScrollEventArgs e)
{
if (e.dy > 0)
{
var visibleItemCount = _layoutManager.ChildCount;
var totalItemCount = _layoutManager.ItemCount;
var pastVisiblesItems = _layoutManager.FindFirstVisibleItemPosition();

if (!_isLoading)
{
if ((visibleItemCount + pastVisiblesItems) >= totalItemCount - 3)
{
_isLoading = true;
LoadMore();
}
}
}
}

public override bool OnCreateOptionsMenu(IMenu menu)
{
Expand All @@ -93,9 +78,12 @@ public override bool OnCreateOptionsMenu(IMenu menu)

private async void LoadMore()
{
if (_isLoading)
return;
_isLoading = true;
using (var client = new HttpClient())
{
var jsstr = await client.GetStringAsync($"http://oneechan.moe/api/list?page={_page++}");
var jsstr = await client.GetStringAsync(_serverLink);
var obj = (JObject)JsonConvert.DeserializeObject(jsstr);
_hasMore = (bool)obj["HasMore"];
var list = (from item in (JArray)obj["List"]
Expand All @@ -109,12 +97,6 @@ private async void LoadMore()
_isLoading = false;
}
}


private async void refresher_Refresh(object sender, EventArgs e)
{
await Refresh();
}

private async System.Threading.Tasks.Task Refresh()
{
Expand All @@ -123,7 +105,7 @@ private async System.Threading.Tasks.Task Refresh()
using (var client = new HttpClient())
{
_page = 0;
var jsstr = await client.GetStringAsync($"http://oneechan.moe/api/list?page={_page++}");
var jsstr = await client.GetStringAsync(_serverLink);
var obj = (JObject)JsonConvert.DeserializeObject(jsstr);
_hasMore = (bool)obj["HasMore"];
var list = (from item in (JArray)obj["List"]
Expand Down
20 changes: 7 additions & 13 deletions AnimateRaw.Android/Adapter/DetailListAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -21,32 +21,26 @@ namespace AnimateRaw.Android.Adapter
public class DetailListAdapter : RecyclerView.Adapter
{
public event EventHandler<int> ItemClick;
public List<AnimateSetModel> Items { get; private set; }
public List<AnimateSetModel> Items { get; }
public DetailListAdapter(List<AnimateSetModel> items) : base()
{
Items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override long GetItemId(int position) => position;

public override int ItemCount => Items.Count;

public override async void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
DetailViewHolder vh = holder as DetailViewHolder;
vh.Name.Text = Items[position].FileName;
vh.ClickCount.Text = $"Click Count:{Items[position].ClickCount}";
var vh = holder as ViewHolderBase;
vh.SetText(Resource.Id.DetailListLayoutName,Items[position].FileName).SetText(Resource.Id.DetailListLayoutClickCount, $"Click Count:{Items[position].ClickCount}");
if (string.IsNullOrEmpty(Items[position].FileThumb))
{
vh.Image.SetBackgroundColor(Color.MediumVioletRed);
vh.Image.SetImageResource(Resource.Drawable.SplashScreen);
vh.SetBackgroundColor(Resource.Id.DetailListImage, Color.MediumVioletRed).SetImageResource(Resource.Id.DetailListImage, Resource.Drawable.SplashScreen);
}
else
{

vh.Image.SetImageBitmap(await GetImageBitmapFromUrl(Items[position].FileThumb));
vh.SetImageBitmap(Resource.Id.DetailListImage, await GetImageBitmapFromUrl(Items[position].FileThumb));
}
}
private async System.Threading.Tasks.Task<Bitmap> GetImageBitmapFromUrl(string url)
Expand Down Expand Up @@ -74,7 +68,7 @@ public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int
{
View itemView = LayoutInflater.From(parent.Context).
Inflate(Resource.Layout.DetailListLayout, parent, false);
DetailViewHolder vh = new DetailViewHolder(itemView);
var vh = new ViewHolderBase(itemView, Resource.Id.DetailListLayoutName, Resource.Id.DetailListLayoutClickCount, Resource.Id.DetailListImage);
itemView.Click += (s, e) => ItemClick?.Invoke(s, vh.LayoutPosition);
return vh;
}
Expand Down
7 changes: 3 additions & 4 deletions AnimateRaw.Android/Adapter/MainListAdapter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
using AnimateRaw.Shared.Model;
using System.Collections.ObjectModel;
using Android.Support.V7.Widget;
using AnimateRaw.Android.ViewHolder;

namespace AnimateRaw.Android.Adapter
{
Expand Down Expand Up @@ -52,16 +53,14 @@ private string GetUpdate(TimeSpan time)

public override void OnBindViewHolder(RecyclerView.ViewHolder holder, int position)
{
MainViewHolder vh = holder as MainViewHolder;
vh.Name.Text = Items[position].Name;
vh.UpdateTime.Text = GetUpdate(Items[position].LastUpdate);
(holder as ViewHolderBase).SetText(Resource.Id.MainListLayoutName, Items[position].Name).SetText(Resource.Id.MainListLayoutUpdateTime, GetUpdate(Items[position].LastUpdate));
}

public override RecyclerView.ViewHolder OnCreateViewHolder(ViewGroup parent, int viewType)
{
View itemView = LayoutInflater.From(parent.Context).
Inflate(Resource.Layout.MainListLayout, parent, false);
MainViewHolder vh = new MainViewHolder(itemView);
var vh = new ViewHolderBase(itemView, Resource.Id.MainListLayoutName, Resource.Id.MainListLayoutUpdateTime);
itemView.Click += (s, e) => ItemClick?.Invoke(s, vh.LayoutPosition);
return vh;
}
Expand Down
47 changes: 32 additions & 15 deletions AnimateRaw.Android/AnimateRaw.Android.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
<TargetFrameworkVersion>v6.0</TargetFrameworkVersion>
<AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
<XamarinInsightsApiKey>482c5e28d8c914da1e468a8e58a6b12f5d6c45f8</XamarinInsightsApiKey>
<NuGetPackageImportStamp>
</NuGetPackageImportStamp>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
Expand All @@ -41,47 +43,51 @@
<ItemGroup>
<Reference Include="Mono.Android" />
<Reference Include="Mono.Android.Export" />
<Reference Include="Newtonsoft.Json, Version=8.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.8.0.3\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Json" />
<Reference Include="System.Net.Http" />
<Reference Include="System.Runtime.Serialization" />
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Xml" />
<Reference Include="Xamarin.Android.Support.v4, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null">
<HintPath>..\packages\Xamarin.Android.Support.v4.23.1.1.0\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll</HintPath>
<Reference Include="Xamarin.Android.Support.v4, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Android.Support.v4.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v4.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.AppCompat, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Android.Support.v7.AppCompat.23.1.1.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
<HintPath>..\packages\Xamarin.Android.Support.v7.AppCompat.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v7.AppCompat.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Xamarin.Android.Support.v7.RecyclerView">
<HintPath>..\packages\Xamarin.Android.Support.v7.RecyclerView.23.1.1.0\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll</HintPath>
</Reference>
<Reference Include="Xamarin.Insights">
<HintPath>..\packages\Xamarin.Insights.1.11.3\lib\MonoAndroid10\Xamarin.Insights.dll</HintPath>
<Reference Include="Xamarin.Android.Support.v7.RecyclerView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Android.Support.v7.RecyclerView.23.1.1.1\lib\MonoAndroid403\Xamarin.Android.Support.v7.RecyclerView.dll</HintPath>
<Private>True</Private>
</Reference>
<Reference Include="Newtonsoft.Json">
<HintPath>..\packages\Newtonsoft.Json.8.0.2\lib\portable-net40+sl5+wp80+win8+wpa81\Newtonsoft.Json.dll</HintPath>
<Reference Include="Xamarin.Insights, Version=1.12.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\Xamarin.Insights.1.12.2\lib\MonoAndroid10\Xamarin.Insights.dll</HintPath>
<Private>True</Private>
</Reference>
</ItemGroup>
<ItemGroup>
<Compile Include="Activity\AboutActivity.cs" />
<Compile Include="Adapter\DetailListAdapter.cs" />
<Compile Include="Adapter\MainListAdapter.cs" />
<Compile Include="Activity\DetailActivity.cs" />
<Compile Include="ViewHolder\DetailViewHolder.cs" />
<Compile Include="Common\Helpers\StatusBarHelper.cs" />
<Compile Include="ViewHolder\ViewHolderBase.cs" />
<Compile Include="View\ExRecyclerView.cs" />
<Compile Include="Activity\MainActivity.cs" />
<Compile Include="ViewHolder\MainViewHolder.cs" />
<Compile Include="Resources\Resource.Designer.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="View\ScrollChildSwipeRefreshLayout.cs" />
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
<None Include="Resources\AboutResources.txt" />
<None Include="Assets\AboutAssets.txt" />
<None Include="packages.config" />
<AndroidResource Include="Resources\layout\MainListLayout.axml">
<SubType>AndroidResource</SubType>
</AndroidResource>
Expand All @@ -105,7 +111,9 @@
<None Include="Properties\AndroidManifest.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\theme.xml" />
<AndroidResource Include="Resources\values\theme.xml">
<SubType>Designer</SubType>
</AndroidResource>
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\drawable\SplashScreen.png" />
Expand All @@ -118,9 +126,18 @@
<ItemGroup>
<AndroidResource Include="Resources\values\styles.xml" />
</ItemGroup>
<ItemGroup>
<AndroidResource Include="Resources\values\color.xml" />
</ItemGroup>
<Import Project="..\AnimateRaw.Shared\AnimateRaw.Shared.projitems" Label="Shared" />
<Import Project="$(MSBuildExtensionsPath)\Xamarin\Android\Xamarin.Android.CSharp.targets" />
<Import Project="..\packages\Xamarin.Insights.1.11.3\build\MonoAndroid10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.11.3\build\MonoAndroid10\Xamarin.Insights.targets')" />
<Import Project="..\packages\Xamarin.Insights.1.12.2\build\MonoAndroid10\Xamarin.Insights.targets" Condition="Exists('..\packages\Xamarin.Insights.1.12.2\build\MonoAndroid10\Xamarin.Insights.targets')" />
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
<PropertyGroup>
<ErrorText>这台计算机上缺少此项目引用的 NuGet 程序包。使用“NuGet 程序包还原”可下载这些程序包。有关更多信息,请参见 http://go.microsoft.com/fwlink/?LinkID=322105。缺少的文件是 {0}。</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Xamarin.Insights.1.12.2\build\MonoAndroid10\Xamarin.Insights.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Xamarin.Insights.1.12.2\build\MonoAndroid10\Xamarin.Insights.targets'))" />
</Target>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
Expand Down
Loading

0 comments on commit ac553c2

Please sign in to comment.