cardview
This commit is contained in:
@@ -1,10 +1,58 @@
|
||||
package com.example.ninefourone.nutritionmaster.adapter;
|
||||
|
||||
import android.content.Context;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.example.ninefourone.nutritionmaster.R;
|
||||
import com.orhanobut.logger.Logger;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
/**
|
||||
* Created by ScorpioMiku on 2018/9/2.
|
||||
*/
|
||||
|
||||
public class CardAdapter extends RecyclerView.Adapter {
|
||||
public class CardAdapter extends RecyclerView.Adapter<CardHolder> {
|
||||
private Context context;
|
||||
private ArrayList<String> mList;
|
||||
|
||||
public CardAdapter(Context context, ArrayList<String> mList) {
|
||||
this.context = context;
|
||||
this.mList = mList;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public CardHolder onCreateViewHolder(ViewGroup parent, int viewType) {
|
||||
View view = LayoutInflater.from(context).inflate(R.layout.card_item, parent, false);
|
||||
CardHolder cardHolder = new CardHolder(view);
|
||||
return cardHolder;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(CardHolder holder, int position) {
|
||||
holder.bindView(mList.get(position));
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mList.size();
|
||||
}
|
||||
|
||||
/**
|
||||
* 右划
|
||||
*/
|
||||
public void swipe2Right() {
|
||||
Logger.d("右划");
|
||||
}
|
||||
|
||||
/**
|
||||
* 左划
|
||||
*/
|
||||
public void swipe2left() {
|
||||
Logger.d("左划");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,10 +1,35 @@
|
||||
package com.example.ninefourone.nutritionmaster.adapter;
|
||||
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.view.View;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import com.example.ninefourone.nutritionmaster.R;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
|
||||
/**
|
||||
* Created by ScorpioMiku on 2018/9/2.
|
||||
*/
|
||||
|
||||
public class CardHolder extends RecyclerView.ViewHolder {
|
||||
@BindView(R.id.iv_photo)
|
||||
ImageView ivPhoto;
|
||||
@BindView(R.id.tv_name)
|
||||
TextView tvName;
|
||||
@BindView(R.id.tv_sign)
|
||||
TextView tvSign;
|
||||
|
||||
|
||||
|
||||
public CardHolder(View itemView) {
|
||||
super(itemView);
|
||||
ButterKnife.bind(this, itemView);
|
||||
}
|
||||
|
||||
public void bindView(String text) {
|
||||
tvName.setText(text);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,7 +6,7 @@ import android.support.v4.app.FragmentManager;
|
||||
import android.support.v4.app.FragmentPagerAdapter;
|
||||
|
||||
import com.example.ninefourone.nutritionmaster.R;
|
||||
import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.page1.Page1;
|
||||
import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization.CustomizationFragment;
|
||||
import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.bodyinformation.BodyInformationFragment;
|
||||
import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.page3.Page3;
|
||||
|
||||
@@ -30,7 +30,7 @@ public class HomePagerAdapter extends FragmentPagerAdapter {
|
||||
if (fragments[position] == null) {
|
||||
switch (position) {
|
||||
case 0:
|
||||
fragments[position] = Page1.getInstance();
|
||||
fragments[position] = CustomizationFragment.getInstance();
|
||||
break;
|
||||
case 1:
|
||||
fragments[position] = BodyInformationFragment.getInstance();
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.example.ninefourone.nutritionmaster.layoutmanager;
|
||||
package com.example.ninefourone.nutritionmaster.cardconfig;
|
||||
|
||||
import android.content.Context;
|
||||
import android.util.TypedValue;
|
||||
|
||||
@@ -1,27 +1,30 @@
|
||||
package com.fu.tantancard;
|
||||
package com.example.ninefourone.nutritionmaster.cardconfig;
|
||||
|
||||
import android.graphics.Canvas;
|
||||
import android.os.Build;
|
||||
import android.support.annotation.RequiresApi;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.helper.ItemTouchHelper;
|
||||
import android.util.Log;
|
||||
import android.view.View;
|
||||
|
||||
import com.example.ninefourone.nutritionmaster.adapter.CardAdapter;
|
||||
import com.example.ninefourone.nutritionmaster.adapter.CardHolder;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Created by Fu.
|
||||
* QQ:908323236
|
||||
* 2017/11/10 11:27
|
||||
* Created by ScorpioMiku on 2018/9/2.
|
||||
*/
|
||||
|
||||
public class CardItemTouchCallBack extends ItemTouchHelper.Callback {
|
||||
|
||||
private static final String TAG = "CardItemTouchCallBack";
|
||||
private RecyclerView mRecyclerView;
|
||||
private MainActivity.CardAdapter mAdapter;
|
||||
private CardAdapter mAdapter;
|
||||
private List mDatas;
|
||||
|
||||
public CardItemTouchCallBack(RecyclerView recyclerView, MainActivity.CardAdapter adapter, List datas) {
|
||||
public CardItemTouchCallBack(RecyclerView recyclerView, CardAdapter adapter, List datas) {
|
||||
this.mRecyclerView = recyclerView;
|
||||
this.mAdapter = adapter;
|
||||
this.mDatas = datas;
|
||||
@@ -93,11 +96,11 @@ public class CardItemTouchCallBack extends ItemTouchHelper.Callback {
|
||||
switch (direction) {
|
||||
case 4:
|
||||
Log.d(TAG, "onSwiped: 左边滑出");
|
||||
mAdapter.addDelCount();
|
||||
mAdapter.swipe2left();
|
||||
break;
|
||||
case 8:
|
||||
Log.d(TAG, "onSwiped: 右边滑出");
|
||||
mAdapter.addLoveCount();
|
||||
mAdapter.swipe2Right();
|
||||
break;
|
||||
}
|
||||
//移除这条数据
|
||||
@@ -111,10 +114,8 @@ public class CardItemTouchCallBack extends ItemTouchHelper.Callback {
|
||||
mAdapter.notifyDataSetChanged();
|
||||
//复位
|
||||
viewHolder.itemView.setRotation(0);
|
||||
if (viewHolder instanceof MainActivity.CardAdapter.CardViewHolder) {
|
||||
MainActivity.CardAdapter.CardViewHolder holder = (MainActivity.CardAdapter.CardViewHolder) viewHolder;
|
||||
holder.iv_love.setAlpha(0f);
|
||||
holder.iv_del.setAlpha(0f);
|
||||
if (viewHolder instanceof CardHolder) {
|
||||
CardHolder holder = (CardHolder) viewHolder;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -130,6 +131,7 @@ public class CardItemTouchCallBack extends ItemTouchHelper.Callback {
|
||||
* @param actionState
|
||||
* @param isCurrentlyActive
|
||||
*/
|
||||
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
|
||||
@Override
|
||||
public void onChildDraw(Canvas c, RecyclerView recyclerView, RecyclerView.ViewHolder viewHolder,
|
||||
float dX, float dY, int actionState, boolean isCurrentlyActive) {
|
||||
@@ -175,17 +177,17 @@ public class CardItemTouchCallBack extends ItemTouchHelper.Callback {
|
||||
//第一层左右滑动的时候稍微有点旋转
|
||||
childView.setRotation(xFraction * 15); //这里最多旋转15度
|
||||
|
||||
if (viewHolder instanceof MainActivity.CardAdapter.CardViewHolder) {
|
||||
MainActivity.CardAdapter.CardViewHolder holder = (MainActivity.CardAdapter.CardViewHolder) viewHolder;
|
||||
if (viewHolder instanceof CardHolder) {
|
||||
CardHolder holder = (CardHolder) viewHolder;
|
||||
if (dX > 0) {
|
||||
//右滑,显示爱心
|
||||
holder.iv_love.setAlpha(xFraction);
|
||||
// holder.iv_love.setAlpha(xFraction);
|
||||
} else if (dX < 0) {
|
||||
//左滑,显示叉,注意这里xFraction为负数,所以要取反
|
||||
holder.iv_del.setAlpha(-xFraction);
|
||||
// holder.iv_del.setAlpha(-xFraction);
|
||||
} else {
|
||||
holder.iv_love.setAlpha(0f);
|
||||
holder.iv_del.setAlpha(0f);
|
||||
// holder.iv_love.setAlpha(0f);
|
||||
// holder.iv_del.setAlpha(0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -194,10 +196,10 @@ public class CardItemTouchCallBack extends ItemTouchHelper.Callback {
|
||||
|
||||
@Override
|
||||
public float getSwipeThreshold(RecyclerView.ViewHolder viewHolder) {
|
||||
Log.i(TAG, "getSwipeThreshold: ");
|
||||
if (isUpOrDown(viewHolder.itemView)) { //如果是向上或者向下滑动
|
||||
return Float.MAX_VALUE; //就返回阈值为很大
|
||||
}
|
||||
// Log.i(TAG, "getSwipeThreshold: ");
|
||||
// if (isUpOrDown(viewHolder.itemView)) { //如果是向上或者向下滑动
|
||||
// return Float.MAX_VALUE; //就返回阈值为很大
|
||||
// }
|
||||
return super.getSwipeThreshold(viewHolder);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.example.ninefourone.nutritionmaster.layoutmanager;
|
||||
package com.example.ninefourone.nutritionmaster.cardconfig;
|
||||
|
||||
import android.os.Build;
|
||||
import android.support.annotation.RequiresApi;
|
||||
@@ -61,9 +61,9 @@ public class SwipeCardLayoutManager extends RecyclerView.LayoutManager {
|
||||
//高度空隙
|
||||
int heightSpace = getHeight() - getDecoratedMeasuredHeight(view);
|
||||
//给子view布局,这里居中了
|
||||
layoutDecoratedWithMargins(view, widthSpace / 2, 200,
|
||||
layoutDecoratedWithMargins(view, widthSpace / 2, 0,
|
||||
widthSpace / 2 + getDecoratedMeasuredWidth(view),
|
||||
getDecoratedMeasuredHeight(view) + 200);
|
||||
getDecoratedMeasuredHeight(view) + 0);
|
||||
|
||||
/**
|
||||
* 下面要调整每一层itemview的的大小及Y轴和Z轴的偏移
|
||||
|
||||
@@ -1,27 +1,93 @@
|
||||
package com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.page1;
|
||||
package com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.support.v7.widget.RecyclerView;
|
||||
import android.support.v7.widget.helper.ItemTouchHelper;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import com.example.ninefourone.nutritionmaster.R;
|
||||
import com.example.ninefourone.nutritionmaster.adapter.CardAdapter;
|
||||
import com.example.ninefourone.nutritionmaster.adapter.CardHolder;
|
||||
import com.example.ninefourone.nutritionmaster.base.BaseFragment;
|
||||
import com.example.ninefourone.nutritionmaster.cardconfig.CardConfig;
|
||||
import com.example.ninefourone.nutritionmaster.cardconfig.CardItemTouchCallBack;
|
||||
import com.example.ninefourone.nutritionmaster.cardconfig.SwipeCardLayoutManager;
|
||||
|
||||
import java.util.ArrayList;
|
||||
|
||||
import butterknife.BindView;
|
||||
import butterknife.ButterKnife;
|
||||
import butterknife.Unbinder;
|
||||
|
||||
/**
|
||||
* Created by ScorpioMiku on 2018/8/26.
|
||||
*/
|
||||
|
||||
public class Page1 extends BaseFragment {
|
||||
public class CustomizationFragment extends BaseFragment {
|
||||
|
||||
@BindView(R.id.card_recycler_view)
|
||||
RecyclerView cardRecyclerView;
|
||||
Unbinder unbinder;
|
||||
|
||||
private CardAdapter cardAdapter;
|
||||
private CardHolder cardHolder;
|
||||
private ArrayList<String> mDataList = new ArrayList<>();
|
||||
|
||||
@Override
|
||||
public int getLayoutResId() {
|
||||
return R.layout.page_1;
|
||||
return R.layout.customization;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initView(Bundle state) {
|
||||
|
||||
loadData();
|
||||
initCardRecyclerView();
|
||||
}
|
||||
|
||||
|
||||
public static BaseFragment getInstance() {
|
||||
return new Page1();
|
||||
return new CustomizationFragment();
|
||||
}
|
||||
|
||||
@Override
|
||||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
|
||||
// TODO: inflate a fragment view
|
||||
View rootView = super.onCreateView(inflater, container, savedInstanceState);
|
||||
unbinder = ButterKnife.bind(this, rootView);
|
||||
return rootView;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
unbinder.unbind();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadData() {
|
||||
super.loadData();
|
||||
for (int i = 0; i < 10; i++) {
|
||||
mDataList.add(i + "个");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化card recyclerview
|
||||
*/
|
||||
private void initCardRecyclerView() {
|
||||
CardConfig.initConfig(getContext());
|
||||
cardRecyclerView.setLayoutManager(new SwipeCardLayoutManager());
|
||||
cardAdapter = new CardAdapter(getContext(), mDataList);
|
||||
cardRecyclerView.setAdapter(cardAdapter);
|
||||
|
||||
CardItemTouchCallBack callBack = new CardItemTouchCallBack(cardRecyclerView, cardAdapter, mDataList);
|
||||
//2.创建ItemTouchHelper并把callBack传进去
|
||||
ItemTouchHelper itemTouchHelper = new ItemTouchHelper(callBack);
|
||||
//3.与RecyclerView关联起来
|
||||
itemTouchHelper.attachToRecyclerView(cardRecyclerView);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,46 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="420dp"
|
||||
android:layout_marginLeft="5dp"
|
||||
android:layout_marginRight="5dp"
|
||||
android:layout_marginTop="10dp"
|
||||
app:cardCornerRadius="5dp">
|
||||
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
<RelativeLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/iv_photo"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="350dp"
|
||||
android:background="@drawable/foods" />
|
||||
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/iv_photo"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="Rachel"
|
||||
android:textColor="#000000"
|
||||
android:textSize="18sp"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/tv_sign"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_below="@id/tv_name"
|
||||
android:layout_marginLeft="10dp"
|
||||
android:layout_marginTop="10dp"
|
||||
android:text="其他"
|
||||
android:textSize="10sp" />
|
||||
|
||||
</RelativeLayout>
|
||||
|
||||
</android.support.v7.widget.CardView>
|
||||
@@ -1,12 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:background="@color/cardview_dark_background">
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<TextView
|
||||
<android.support.v7.widget.RecyclerView
|
||||
android:id="@+id/card_recycler_view"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:gravity="center"
|
||||
android:text="page1" />
|
||||
</android.support.constraint.ConstraintLayout>
|
||||
android:background="@drawable/ic_record">
|
||||
|
||||
</android.support.v7.widget.RecyclerView>
|
||||
</LinearLayout>
|
||||
@@ -1,7 +1,7 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string-array name="sections">
|
||||
<item>page1</item>
|
||||
<item>一周定制</item>
|
||||
<item>今日信息</item>
|
||||
<item>page3</item>
|
||||
</string-array>
|
||||
|
||||
Reference in New Issue
Block a user