在片段

时间:2016-03-22 13:39:06

标签: java android android-fragments

您好我将一个recyclerViewer放入一个包含CardView列表的片段中。我希望每个cardView都有双面翻转动画。我搜索了任何教程,我在谷歌找到了,但这对我没那么帮助。你能告诉我一些如何实现它的想法吗?感谢。

这是我卡片的第一面:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="4dp"
android:layout_margin="5dp">

<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <TextView
        android:id="@+id/title"
        android:layout_width="match_parent"
        android:layout_height="20dp"
        android:background="#9E9E9E"
        android:text="Comanda title"
        android:gravity="center_vertical"
        android:textColor="@android:color/white"
        android:textSize="14dp"/>


    <TextView
        android:id="@+id/txtName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Name"
        android:gravity="center_vertical"
        android:textSize="10dp"
        android:layout_below="@id/title"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"/>

    <TextView
        android:id="@+id/txtSurname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Surname"
        android:gravity="center_vertical"
        android:textSize="10dp"
        android:layout_below="@id/txtName"
        android:layout_marginTop="10dp"
        android:layout_marginLeft="5dp"
        />

    <TextView
        android:id="@+id/txtEmail"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Email"
        android:textSize="10dp"
        android:layout_marginTop="10dp"
        android:layout_alignParentRight="true"
        android:layout_marginRight="150dp"
        android:layout_alignBaseline="@id/txtName"/>

    <TextView
        android:id="@+id/txtAdd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Address"
        android:textSize="10dp"
        android:layout_alignLeft="@id/txtEmail"
        android:layout_alignBaseline="@id/txtSurname"/>

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/imageView3"
        android:layout_below="@+id/txtSurname"
        android:src="@drawable/ic_checkbox_blank_circle_white_18dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentStart="true" />

</RelativeLayout>

卡片的第二面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:src="@drawable/shoppingdeselected"
    android:scaleType="centerCrop"
    android:contentDescription="Comanda" />

我的Tab1片段java类看起来像这样:

public class Tab1 extends Fragment {

@Override
  public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup      container, @Nullable Bundle savedInstanceState) {
    View v =inflater.inflate(R.layout.tab_1,container,false);
    RecyclerView recList = (RecyclerView) v.findViewById(R.id.cardList);
    recList.setHasFixedSize(true);
    LinearLayoutManager llm = new LinearLayoutManager(v.getContext());

    llm.setOrientation(LinearLayoutManager.VERTICAL);
    recList.setLayoutManager(llm);

    ContactAdapter ca = new ContactAdapter(createList(30));
    recList.setAdapter(ca);
    return v;
}


public static class CardFrontFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.card_layout, container, false);
    }
}

public static class CardBackFragment extends Fragment {
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        return inflater.inflate(R.layout.card_layout2, container, false);
    }
}
private List<ContactInfo> createList(int size) {

    List<ContactInfo> result = new ArrayList<ContactInfo>();
    for (int i=1; i <= size; i++) {
        ContactInfo ci = new ContactInfo();
        ci.name = ContactInfo.NAME_PREFIX + i;
        ci.surname = ContactInfo.SURNAME_PREFIX + i;
        ci.email = ContactInfo.EMAIL_PREFIX + i + "@test.com";

        result.add(ci);

    }

    return result;
}
}

我的适配器用于将对象加载到卡中的类:

 public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.ContactViewHolder> {

private List<ContactInfo> contactList;

public ContactAdapter(List<ContactInfo> contactList) {
    this.contactList = contactList;
}


@Override
public int getItemCount() {
    return contactList.size();
}

@Override
public void onBindViewHolder(ContactViewHolder contactViewHolder, int i) {
    ContactInfo ci = contactList.get(i);
    contactViewHolder.vName.setText(ci.name);
    contactViewHolder.vSurname.setText(ci.surname);
    contactViewHolder.vEmail.setText(ci.email);
    contactViewHolder.vTitle.setText(ci.name + " " + ci.surname);
}

@Override
public ContactViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
    View itemView = LayoutInflater.
            from(viewGroup.getContext()).
            inflate(R.layout.card_layout, viewGroup, false);


    return new ContactViewHolder(itemView);
}

public static class ContactViewHolder extends RecyclerView.ViewHolder {

    protected TextView vName;
    protected TextView vSurname;
    protected TextView vEmail;
    protected TextView vTitle;

    public ContactViewHolder(View v) {
        super(v);
        vName =  (TextView) v.findViewById(R.id.txtName);
        vSurname = (TextView)  v.findViewById(R.id.txtSurname);
        vEmail = (TextView)  v.findViewById(R.id.txtEmail);
        vTitle = (TextView) v.findViewById(R.id.title);
        v.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                vName.setText("Clicked");

            }
        });
    }
}
 }

最后,标签1布局:

  <?xml version="1.0" encoding="utf-8"?>
  <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="match_parent" android:layout_height="match_parent"
  android:background="#E0E0E0"
  >
 <android.support.v7.widget.RecyclerView
    android:foreground="?android:attr/selectableItemBackground"
    android:clickable="true"
    android:id="@+id/cardList"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    />


   </RelativeLayout>

0 个答案:

没有答案