This commit is contained in:
ScorpioMiku
2018-09-02 14:49:34 +08:00
parent 06e16847b0
commit 02ff5ecc97
11 changed files with 231 additions and 46 deletions

View File

@@ -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("左划");
}
}

View File

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

View File

@@ -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();

View File

@@ -1,4 +1,4 @@
package com.example.ninefourone.nutritionmaster.layoutmanager;
package com.example.ninefourone.nutritionmaster.cardconfig;
import android.content.Context;
import android.util.TypedValue;

View File

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

View File

@@ -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轴的偏移

View File

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

View File

@@ -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>

View File

@@ -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>

View File

@@ -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>