2012-08-17 2 views
1

viewflippers뿐만 아니라 페이지 컬 애니메이션의 여러 예제를 접했습니다. 페이지 컬 애니메이션을 통해 뷰 프리퍼의 하위 항목을 탐색 할 수 있습니까? viewflippers에 적용한 애니메이션은 슬라이드 인/슬라이드 아웃과 같이 매우 기본적이었으며 동일한 작업을 수행 할 수 있는지 궁금해서/이미 페이지 컬 애니메이션을 사용하여 구현되었습니다.viewflipper의 뷰를 뒤집는 페이지 컬 애니메이션

+0

안녕하세요 그래서 당신이 발견되거나 답을 구현 있나요? –

답변

0

여기에 오픈 소스 안드로이드 프로젝트가 있습니다 : http://code.google.com/p/android-page-curl/. 다른 하나를 여기에서 찾았습니다 : https://github.com/harism/android_page_curl/.

그러나 네가 요구하는 경우 네이티브 구현이 없습니다.

+0

@Warpzit에 답변 할 시간을내어 주셔서 감사하지만 view-flipper의 하위보기에 특별히 적용될 페이지 컬을 찾고 있습니다. – Rohan

+0

@ 로한 선택의 여지가 있습니까? 가장 중요한 것은 무엇입니까? 그것을 완벽하게하기 위해서 = 너 자신을해라. 어떤 구석과 시간을 자르려면 = 다른 사람들이 만든 것을 사용하고 자신의 일을 순종한다. – Warpzit

+0

감사합니다. 아마도 OpenGL을 자세하게 읽고 코드를 구현/실행해볼 것입니다. 나는 당신의 답변을 투표하려했으나 그렇게하기 위해서는 15 가지의 평판이 필요합니다. – Rohan

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); 
    } 
}