Về cơ bản, tôi đang yêu cầu lại this question nhưng để triển khai trên Android.Vuốt giữa các hình ảnh được lọc cho android
Tôi đang cố gắng cho phép người dùng vuốt giữa các bộ lọc trên hình ảnh tĩnh. Ý tưởng là hình ảnh được giữ nguyên trong khi bộ lọc cuộn phía trên nó. Snapchat gần đây đã phát hành một phiên bản thực hiện tính năng này. This video shows exactly what I'm trying to accomplish at 1:05.
Tôi đã thử điền một danh sách có lớp phủ và phân trang qua danh sách với onFling và vẽ bằng onDraw, nhưng tôi sẽ mất hoạt ảnh. Có cách nào điều này có thể được thực hiện với ViewPager?
EDIT: Theo yêu cầu, tôi đã cung cấp triển khai cho phân trang chế độ xem lớp phủ. Nó lấp đầy viewpager với hình ảnh png trong suốt nằm trên đỉnh của một khung nhìn hình ảnh. Ngoài ra, mã này là trong C#, như tôi đang sử dụng Xamarin Android. Đó là khá tương tự như Java cho những người không quen với C#
...
static List<ImageView> overlayList = new List<ImageView>();
...
public class OverlayFragmentAdapter : FragmentPagerAdapter
{
public OverlayFragmentAdapter(Android.Support.V4.App.FragmentManager fm) : base(fm)
{
}
public override int Count
{
get { return 5; } //hardcoded temporarily
}
public override Android.Support.V4.App.Fragment GetItem(int position)
{
return new OverlayFragment();
}
}
public class OverlayFragment : Android.Support.V4.App.Fragment
{
public override View OnCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.Inflate (Resource.Layout.fragment_overlay, container, false);
LinearLayout l1 = view.FindViewById<LinearLayout> (Resource.Id.overlay_container);
ImageView im = new ImageView (Activity);
im.SetImageResource (Resource.Drawable.Overlay); //Resource.Drawable.Overlay is a simple png transparency I created. R
l1.AddView (im);
overlayList.AddElement (im);
return view;
}
}
Hoạt động Giao diện XML:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="bottom">
<ImageView
android:id="@+id/background_image"
android:layout_width="match_parent"
android:layout_height="match_parent" />
<RelativeLayout <!-- This second layout is for buttons which I have omitted from this code -->
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:id="@+id/edit_layout">
<android.support.v4.view.ViewPager
android:id="@+id/overlay_pager"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
</RelativeLayout>
Fragment Overlay XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/overlay_container"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center" />
Để tóm tắt ngắn gọn: các ViewPager ngồi trên đỉnh đầu tiên imageview, hoạt động như một nền tảng. Phương thức OnCreateView tạo một lớp phủ lớp phủ và một lớp phủ hình ảnh từ một tài nguyên mà nó đặt bên trong bố cục overlay_container. Lưu hình ảnh (mà tôi chưa đăng vì nằm ngoài phạm vi của câu hỏi này) đơn giản, tất cả những gì nó tạo ra là bitmap nền, bitmap lớp phủ và sử dụng canvas để vẽ lớp phủ lên nền, sau đó ghi vào tập tin.
Xin chào, điều này không thể thực hiện được bằng cách đơn giản bằng cách làm cho nền của máy nhắn tin xem trong suốt và đặt một hình ảnh phía sau nó? Nó có 100 tiền thưởng, vì vậy tôi đã không cảm thấy như thế này là đủ hoàn chỉnh của một câu trả lời, nhưng đó là cách tôi muốn làm điều đó và tôi không thể thấy tại sao nó sẽ không hoạt động. – Ben
@Ben Hey, Đó là cách tôi triển khai lớp phủ. Tôi đã có một hình ảnh phía sau và máy nhắn tin xem có một số lớp phủ. Tuy nhiên, tôi không nghĩ rằng sẽ làm việc cho các bộ lọc hình ảnh (đen/trắng, nâu đỏ vv) –
ahh đúng, tôi chỉ xem cho một vài giây của nó và thấy các văn bản bay trên đầu trang. P – Ben