2012-08-17 72 views
1

我遇到了幾個頁面捲曲動畫以及viewflippers的例子。是否可以通過頁面捲曲動畫在視圖片的子項之間導航?我迄今爲止應用於viewflippers的動畫是非常基本的,比如滑入/滑出,我想知道是否可以完成/已經使用頁面捲曲動畫實現。頁面捲曲動畫在視圖翻轉視圖之間翻轉

+0

嗨那麼你有沒有發現或者實現的答案嗎? – 2015-04-09 13:00:40

回答

0

這裏有一個開源的android項目:http://code.google.com/p/android-page-curl/。 我在這裏找到另一個:https://github.com/harism/android_page_curl/

但是,如果這就是你所要求的,那麼就沒有本地實現。

+0

感謝您花時間回答@Warpzit,但我正在尋找頁面捲曲,專門應用於查看視圖的子視圖。 – Rohan 2012-08-17 09:39:53

+0

@Rohan你應該做出選擇,最重要的是什麼?要做到完美=自己做,削減一些角落和時間=使用別人做的事,並堅持自己的工作。 – Warpzit 2012-08-19 17:23:23

+0

謝謝。我可能會詳細閱讀OpenGL並嘗試實現/播放一些代碼。我試圖回答你的答案,但我需要15點聲望才能這樣做。 – Rohan 2012-08-21 07:16:22

0

你需要導入一個模塊庫,這一點,從HERE

使用後下面的代碼: -

item_page.xml

<?xml version="1.0" encoding="utf-8"?> 
    <ScrollView 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"> 

     <LinearLayout 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="vertical"> 

      <ImageView 
       android:id="@+id/image" 
       android:layout_width="200dp" 
       android:layout_height="200dp" 
       android:layout_gravity="center" 
       android:layout_marginTop="10dp" 
       android:contentDescription="@string/app_name" 
       android:scaleType="centerCrop" /> 

      <TextView 
       android:id="@+id/text" 
       android:padding="10dp" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:textAppearance="?android:attr/textAppearanceMediumInverse" 
       android:textColor="@android:color/black" /> 
     </LinearLayout> 
    </ScrollView> 

activity_flipper_view_controller.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:flip="http://schemas.android.com/apk/res-auto" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/darker_gray" 
     android:paddingLeft="10dp" 
     android:text="@string/header" 
     android:textAppearance="@android:style/TextAppearance.Large" /> 

    <com.aphidmobile.flip.FlipViewController 
     android:id="@+id/flip_view" 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     flip:orientation="horizontal" /> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@android:color/darker_gray" 
     android:paddingLeft="10dp" 
     android:text="@string/footer" 
     android:textAppearance="@android:style/TextAppearance.Large" /> 
</LinearLayout> 

FlipperAdapter.java

package pratiksha.com.pagecurlviewdemo; 

import android.app.Activity; 
import android.support.v7.app.AppCompatActivity; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import java.util.List; 

import pratiksha.com.pagecurlviewdemo.R; 

/** 
* Created by User(LPT-APR2015-02) on 11/7/2016. 
*/ 
public class FlipperAdapter extends BaseAdapter { 

    private AppCompatActivity appCompatActivity; 
    private List<String> strings; 
    private int[] drawableIds = {R.mipmap.ic_launcher, R.mipmap.page1, R.mipmap.page2, R.mipmap.ic_launcher, 
      R.mipmap.page2, R.mipmap.page1, R.mipmap.page2, R.mipmap.ic_launcher, 
      R.mipmap.page1}; 

    public FlipperAdapter(AppCompatActivity appCompatActivity, List<String> strings) { 
     super(); 
     this.strings = strings; 
     this.appCompatActivity = appCompatActivity; 
    } 

    @Override 
    public int getCount() { 
     return strings.size(); 
    } 

    @Override 
    public String getItem(int position) { 
     return strings.get(position); 
    } 

    @Override 
    public long getItemId(int position) { 
     return strings.indexOf(getItem(position)); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     ViewHolder holder; 
     LayoutInflater inflater = (LayoutInflater) appCompatActivity.getSystemService(Activity.LAYOUT_INFLATER_SERVICE); 

     // If holder not exist then locate all view from UI file. 
     if (convertView == null) { 
      // inflate UI from XML file 
      convertView = inflater.inflate(R.layout.item_page, parent, false); 
      // get all UI view 
      holder = new ViewHolder(convertView); 
      // set tag for holder 
      convertView.setTag(holder); 
     } else { 
      // if holder created, get tag from view 
      holder = (ViewHolder) convertView.getTag(); 
     } 

     holder.textView.setText(getItem(position)); 
     holder.imageView.setImageResource(drawableIds[position]); 

     return convertView; 
    } 

    private static class ViewHolder { 
     private TextView textView; 
     private ImageView imageView; 

     public ViewHolder(View v) { 
      imageView = (ImageView)v.findViewById(R.id.image); 
      textView = (TextView) v.findViewById(R.id.text); 
     } 
    } 
} 

主要Activity.java

package pratiksha.com.pagecurlviewdemo; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 

import com.aphidmobile.flip.FlipViewController; 

import java.util.ArrayList; 

public class FlipperViewController extends AppCompatActivity { 

    private FlipViewController flipViewController; 
    private FlipperAdapter adapter; 
    private ArrayList<String> stringArrayList; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_flipper_view_controller); 

     flipViewController = (FlipViewController)findViewById(R.id.flip_view); 
     stringArrayList = new ArrayList<>(); 
     readDataFromAssets(); 

     //create and attach adapter to flipper view 
     adapter = new FlipperAdapter(this, stringArrayList); 
     flipViewController.setAdapter(adapter); 
    } 

    private void readDataFromAssets() { 
     for(int i=1;i<10;i++) 
     stringArrayList.add("Page Number "+i); 
    } 
}