diff --git a/app/build.gradle b/app/build.gradle index 928622d..7b7a163 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -90,4 +90,6 @@ dependencies { implementation 'com.loopeer.library:cardstack:1.0.2' implementation 'com.ramotion.foldingcell:folding-cell:1.2.3' + implementation 'com.yarolegovich:discrete-scrollview:1.4.9' + } diff --git a/app/src/main/java/com/example/PersonalCenter/EssayGalleryAdapter.java b/app/src/main/java/com/example/PersonalCenter/EssayGalleryAdapter.java new file mode 100644 index 0000000..d95fb47 --- /dev/null +++ b/app/src/main/java/com/example/PersonalCenter/EssayGalleryAdapter.java @@ -0,0 +1,55 @@ +package com.example.PersonalCenter; + +import android.app.Activity; +import android.graphics.Point; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import androidx.annotation.ColorInt; +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.bumptech.glide.Glide; +import com.example.cmknowledgegraph.MainActivity; +import com.example.cmknowledgegraph.R; + +import java.util.List; + +public class EssayGalleryAdapter extends RecyclerView.Adapter{ + private List data; + + public EssayGalleryAdapter(List data) { + this.data = data; + } + + @Override + public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + LayoutInflater inflater = LayoutInflater.from(parent.getContext()); + View v = inflater.inflate(R.layout.item_shop_card, parent, false); + return new ViewHolder(v); + } + + @Override + public void onBindViewHolder(ViewHolder holder, int position) { + Glide.with(holder.itemView.getContext()) + .load(data.get(position).getImage()) + .into(holder.image); + } + + @Override + public int getItemCount() { + return data.size(); + } + + class ViewHolder extends RecyclerView.ViewHolder { + + private ImageView image; + + public ViewHolder(View itemView) { + super(itemView); + image = (ImageView) itemView.findViewById(R.id.image); + } + } +} diff --git a/app/src/main/java/com/example/PersonalCenter/Image.java b/app/src/main/java/com/example/PersonalCenter/Image.java new file mode 100644 index 0000000..b0e24ca --- /dev/null +++ b/app/src/main/java/com/example/PersonalCenter/Image.java @@ -0,0 +1,31 @@ +package com.example.PersonalCenter; + +public class Image { + private final int id; + private final String name; + private final String price; + private final int image; + + public Image(int id, String name, String price, int image) { + this.id = id; + this.name = name; + this.price = price; + this.image = image; + } + + public int getId() { + return id; + } + + public String getName() { + return name; + } + + public String getPrice() { + return price; + } + + public int getImage() { + return image; + } +} diff --git a/app/src/main/java/com/example/PersonalCenter/PersonContent.java b/app/src/main/java/com/example/PersonalCenter/PersonContent.java index e6e7b4b..f9867cf 100644 --- a/app/src/main/java/com/example/PersonalCenter/PersonContent.java +++ b/app/src/main/java/com/example/PersonalCenter/PersonContent.java @@ -1,16 +1,19 @@ package com.example.PersonalCenter; +import android.animation.ArgbEvaluator; import android.app.Person; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; +import android.graphics.Outline; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.ViewOutlineProvider; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.view.animation.Interpolator; @@ -23,6 +26,7 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.widget.Toolbar; +import androidx.cardview.widget.CardView; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.LinearLayoutManager; @@ -40,33 +44,45 @@ import com.hanks.htextview.rainbow.RainbowTextView; import com.mxn.soul.flowingdrawer_core.ElasticDrawer; import com.mxn.soul.flowingdrawer_core.FlowingDrawer; import com.skyfishjy.library.RippleBackground; +import com.yarolegovich.discretescrollview.DSVOrientation; +import com.yarolegovich.discretescrollview.DiscreteScrollView; +import com.yarolegovich.discretescrollview.InfiniteScrollAdapter; +import com.yarolegovich.discretescrollview.transform.ScaleTransformer; + +import java.util.List; + +import de.hdodenhof.circleimageview.CircleImageView; public class PersonContent extends Fragment { protected int res; - private ViewPager viewPager; - private RecyclerView rvFeed; - private FlowingDrawer mDrawer; - @Override - public void onAttach(@NonNull Context context) { - super.onAttach(context); - MainActivity mainActivity = (MainActivity) context; - } - + private FlowingDrawer mDrawer; AppCompatActivity appCompatActivity; - public AppCompatActivity getAppCompatActivity() { return appCompatActivity; } +// 与滚动文章有关的变量 +private List data; + private essayGallary essayGallary; + + private TextView currentItemName; + private TextView currentItemPrice; + private ImageView rateItemButton; + private DiscreteScrollView itemPicker; + private InfiniteScrollAdapter infiniteAdapter; +// 与滚动文章有关的变量 + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + MainActivity mainActivity = (MainActivity) context; + } public void setAppCompatActivity(AppCompatActivity appCompatActivity) { this.appCompatActivity = appCompatActivity; } - - - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment @@ -85,34 +101,91 @@ public class PersonContent extends Fragment { //设置侧滑菜单 setupMenu(); } + + protected void setuptoolbar(){ //分别设置背景和头像 //背景 // ImageView blurimageView = (ImageView) appCompatActivity.findViewById(R.id.iv_blur); - - RippleBackground linearimageView = (RippleBackground) appCompatActivity.findViewById(R.id.linearcontent); - linearimageView.startRippleAnimation(); +//背景波纹图 +// RippleBackground linearimageView = (RippleBackground) appCompatActivity.findViewById(R.id.linearcontent); +// linearimageView.startRippleAnimation(); //头像 ImageView avatarImageView = (ImageView) appCompatActivity.findViewById(R.id.iv_avatar); - Animation anim = AnimationUtils.loadAnimation(appCompatActivity,R.anim.anim_rotate); - anim.setDuration(14000); - avatarImageView.startAnimation(anim); - ImageView drugImageView = (ImageView) appCompatActivity.findViewById(R.id.drug_essays); + Glide.with(getAppCompatActivity()).load(R.drawable.draw7).into(avatarImageView); + ViewOutlineProvider vop = new ViewOutlineProvider() { + @Override + public void getOutline(View view, Outline outline) { + //修改outline + outline.setOval(0,0,view.getWidth(),view.getHeight()); + }}; + avatarImageView.setOutlineProvider(vop); + //二维码 + ImageView QRcodeImageView = (ImageView) appCompatActivity.findViewById(R.id.QRCode); + Glide.with(getAppCompatActivity()).load(R.drawable.qrcodeimage).into(QRcodeImageView); +// Animation anim = AnimationUtils.loadAnimation(appCompatActivity,R.anim.anim_rotate); +// anim.setDuration(14000); +// avatarImageView.startAnimation(anim); +// ImageView drugImageView = (ImageView) appCompatActivity.findViewById(R.id.drug_essays); //drugessays(像动态一样) - Animation animessays = AnimationUtils.loadAnimation(appCompatActivity,R.anim.anim_drugessays); - animessays.setDuration(12000); - drugImageView.startAnimation(animessays); - Glide.with(appCompatActivity).load(R.drawable.draw6).into(avatarImageView); - +// Animation animessays = AnimationUtils.loadAnimation(appCompatActivity,R.anim.anim_drugessays); +// animessays.setDuration(12000); +// drugImageView.startAnimation(animessays); +// Glide.with(appCompatActivity).load(R.drawable.draw6).into(avatarImageView); //用户名 - final TextView rainbowTextView = (TextView) appCompatActivity.findViewById(R.id.user_name_person); + final TextView rainbowTextView = (TextView) appCompatActivity.findViewById(R.id.person_username); rainbowTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { } }); + //菜单图片按钮 + ImageView menuImageview = (ImageView) appCompatActivity.findViewById(R.id.set_image); + menuImageview.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + mDrawer.toggleMenu(); + } + }); +/* +* +* ******* +* // 设置滚动的文章按钮,文章画廊 +* **** +* */ + + currentItemName = (TextView) appCompatActivity.findViewById(R.id.item_name); + currentItemPrice = (TextView) appCompatActivity.findViewById(R.id.item_price); +// rateItemButton = (ImageView) appCompatActivity.findViewById(R.id.item_btn_rate); + essayGallary = essayGallary.get(); + data = essayGallary.getData(); + itemPicker = (DiscreteScrollView) appCompatActivity.findViewById(R.id.item_picker); + itemPicker.setOrientation(DSVOrientation.HORIZONTAL); + itemPicker.addOnItemChangedListener(new DiscreteScrollView.OnItemChangedListener() { + @Override + public void onCurrentItemChanged(@Nullable EssayGalleryAdapter.ViewHolder viewHolder, int i) { + int positionInDataSet = infiniteAdapter.getRealPosition(i); + onItemChanged(data.get(positionInDataSet)); + } + }); + infiniteAdapter = InfiniteScrollAdapter.wrap(new EssayGalleryAdapter(data)); + itemPicker.setAdapter(infiniteAdapter); + itemPicker.setItemTransitionTimeMillis(150); + itemPicker.setItemTransformer(new ScaleTransformer.Builder() + .setMinScale(0.8f) + .build()); + onItemChanged(data.get(0)); + + /* + * + * + * + * + * */ + + avatarOnclickListener avatarOnclickListener = new avatarOnclickListener(getAppCompatActivity(),this); avatarOnclickListener.setFlowingDrawerl(mDrawer); avatarImageView.setOnClickListener(avatarOnclickListener); @@ -125,6 +198,7 @@ public class PersonContent extends Fragment { MenuListFragment mMenuFragment = (MenuListFragment) fm.findFragmentById(R.id.id_container_menu); if (mMenuFragment == null) { + Log.i("is","------------it null"); mMenuFragment = new MenuListFragment(); mMenuFragment.setAppCompatActivity(getAppCompatActivity()); fm.beginTransaction().add(R.id.id_container_menu, mMenuFragment).commit(); @@ -133,6 +207,12 @@ public class PersonContent extends Fragment { } - // + //有关文章滚动画廊的方法 + private void onItemChanged(Image item) { + currentItemName.setText(item.getName()); + currentItemPrice.setText(item.getPrice()); +// changeRateButtonState(item); + } + } diff --git a/app/src/main/java/com/example/PersonalCenter/essayGallary.java b/app/src/main/java/com/example/PersonalCenter/essayGallary.java new file mode 100644 index 0000000..2be77e4 --- /dev/null +++ b/app/src/main/java/com/example/PersonalCenter/essayGallary.java @@ -0,0 +1,43 @@ +package com.example.PersonalCenter; + +import android.content.Context; +import android.content.SharedPreferences; + +import com.example.cmknowledgegraph.R; + +import java.util.Arrays; +import java.util.List; +/* +* 文章画廊类 +* */ +public class essayGallary { + private static final String STORAGE = "shop"; + + public static essayGallary get() { + return new essayGallary(); + } + +// private SharedPreferences storage; +// +// private Shop() { +// storage = getInstance().getSharedPreferences(STORAGE, Context.MODE_PRIVATE); +// } + + public List getData() { + return Arrays.asList( + new Image(1, "文章1", "概要1", R.drawable.draw6), + new Image(2, "文章2", "概要2", R.drawable.draw6), + new Image(3, "文章3", "概要3", R.drawable.draw6), + new Image(4, "文章4", "概要4", R.drawable.draw6), + new Image(5, "文章5", "概要5", R.drawable.draw6), + new Image(6, "文章6", "概要6", R.drawable.draw6)); + } + +// public boolean isRated(int itemId) { +// return storage.getBoolean(String.valueOf(itemId), false); +// } +// +// public void setRated(int itemId, boolean isRated) { +// storage.edit().putBoolean(String.valueOf(itemId), isRated).apply(); +// } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java b/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java index 37290ea..66d27c4 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java +++ b/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java @@ -13,6 +13,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView; import androidx.appcompat.app.AppCompatActivity; +import androidx.core.content.ContextCompat; import androidx.fragment.app.FragmentManager; import androidx.fragment.app.FragmentTransaction; @@ -25,12 +26,23 @@ public class MainActivity extends AppCompatActivity { private TextView mTextMessage; private FragmentTransaction transaction; private FragmentManager fragmentManager; + public AppCompatActivity appCompatActivity; +// private static ContextCompat contextCompat; BottomNavigationView navView; - public final AppCompatActivity getAppCompatActivity(){ + public AppCompatActivity getAppCompatActivity(){ return this; } - + public void setAppCompatActivity(AppCompatActivity appCompatActivity){ + this.appCompatActivity = appCompatActivity; + } +// +// public static ContextCompat getComtextCompat() { +// return contextCompat; +// } +// private void setContextCompat(ContextCompat contextCompat){ +// this.contextCompat=contextCompat; +// } private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { @@ -98,7 +110,8 @@ protected void onCreate(Bundle savedInstanceState) { navView = findViewById(R.id.nav_view); mTextMessage = findViewById(R.id.message); navView.setOnNavigationItemSelectedListener(mOnNavigationItemSelectedListener); - +// setAppCompatActivity(this); +// setContextCompat(contextCompat); } diff --git a/app/src/main/java/com/example/cmknowledgegraph/PersonalityCenterActivity.java b/app/src/main/java/com/example/cmknowledgegraph/PersonalityCenterActivity.java index 6e23a51..fc99511 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/PersonalityCenterActivity.java +++ b/app/src/main/java/com/example/cmknowledgegraph/PersonalityCenterActivity.java @@ -16,6 +16,7 @@ public class PersonalityCenterActivity extends AppCompatActivity { Log.i("PersonalityCenterActivity","个人中心"); super.onCreate(savedInstanceState); setContentView(R.layout.activity_personality_center); + } diff --git a/app/src/main/res/drawable/ic_arrow_back_black_24dp.png b/app/src/main/res/drawable/ic_arrow_back_black_24dp.png new file mode 100644 index 0000000..73f1dda Binary files /dev/null and b/app/src/main/res/drawable/ic_arrow_back_black_24dp.png differ diff --git a/app/src/main/res/drawable/mirror_light_ctrl_gray.png b/app/src/main/res/drawable/mirror_light_ctrl_gray.png new file mode 100644 index 0000000..77616a9 Binary files /dev/null and b/app/src/main/res/drawable/mirror_light_ctrl_gray.png differ diff --git a/app/src/main/res/drawable/mirror_light_ctrl_green.png b/app/src/main/res/drawable/mirror_light_ctrl_green.png new file mode 100644 index 0000000..3eddc5f Binary files /dev/null and b/app/src/main/res/drawable/mirror_light_ctrl_green.png differ diff --git a/app/src/main/res/drawable/next.png b/app/src/main/res/drawable/next.png new file mode 100644 index 0000000..5a54c2c Binary files /dev/null and b/app/src/main/res/drawable/next.png differ diff --git a/app/src/main/res/drawable/qrcodeimage.jpeg b/app/src/main/res/drawable/qrcodeimage.jpeg new file mode 100644 index 0000000..656a1a3 Binary files /dev/null and b/app/src/main/res/drawable/qrcodeimage.jpeg differ diff --git a/app/src/main/res/drawable/voiceprint.png b/app/src/main/res/drawable/voiceprint.png new file mode 100644 index 0000000..d57da2b Binary files /dev/null and b/app/src/main/res/drawable/voiceprint.png differ diff --git a/app/src/main/res/layout/activity_personality_center.xml b/app/src/main/res/layout/activity_personality_center.xml index f24d26a..6d60bec 100644 --- a/app/src/main/res/layout/activity_personality_center.xml +++ b/app/src/main/res/layout/activity_personality_center.xml @@ -37,74 +37,230 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - //头像 - - //用户名 - - - - + > + + + + + + + + + + + + + + + + + + + + + + + + + - - + + + + + + + - 设置几个选项 + android:layout_below="@+id/personal_head_card"> @@ -144,6 +300,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="饮食爱好" + android:textSize="12dp" android:layout_gravity="center_horizontal" > @@ -153,14 +310,16 @@ android:id="@+id/person_cardview_relalinearLayout2" android:layout_width="wrap_content" android:layout_height="wrap_content" + android:layout_alignLeft="@+id/person_cardview_relalinearLayout1" + android:layout_marginLeft="90dp" android:orientation="vertical" android:layout_marginTop="10dp" android:layout_centerHorizontal="true" > - - - - - + + + + + + + + + + + + + + + + + + + + + + + + > @@ -218,6 +379,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="养生推荐" + android:textSize="12dp" android:layout_gravity="center_horizontal"/> @@ -226,13 +388,14 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="vertical" - android:layout_below="@+id/person_cardview_relalinearLayout2" - android:layout_marginTop="5dp" + android:layout_alignLeft="@+id/person_cardview_relalinearLayout4" + android:layout_marginLeft="90dp" + android:layout_marginTop="10dp" android:layout_centerHorizontal="true"> @@ -241,6 +404,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="消息通知" + android:textSize="12dp" android:layout_gravity="center_horizontal"/> @@ -251,6 +415,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/layout/item_shop_card.xml b/app/src/main/res/layout/item_shop_card.xml new file mode 100644 index 0000000..661c7e7 --- /dev/null +++ b/app/src/main/res/layout/item_shop_card.xml @@ -0,0 +1,17 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 998eeb8..1c5b086 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -49,4 +49,68 @@ + + + @android:color/transparent + #cc000000 + #b4ffffff + #FFC107 + + #84ceca + + #3453d1 + #6d69ff + #cd47c6 + + + @color/gradientPeriodicClouds_c1 + @color/gradientPeriodicClouds_c2 + @color/gradientPeriodicClouds_c3 + + + #62bff5 + #61b3e5 + #5d8fb2 + + + @color/gradientCloudy_c1 + @color/gradientCloudy_c2 + @color/gradientCloudy_c3 + + + #51bbf5 + #71c3ee + #f3e5d2 + + + @color/gradientMostlyCloudy_c1 + @color/gradientMostlyCloudy_c2 + @color/gradientMostlyCloudy_c3 + + + #5b64be + #6084df + #64a2ff + + + @color/gradientPartlyCloudy_c1 + @color/gradientPartlyCloudy_c2 + @color/gradientPartlyCloudy_c3 + + + #6d4fbe + #6c56be + #a189f1 + + + @color/gradientClear_c1 + @color/gradientClear_c2 + @color/gradientClear_c3 + + + + #84ceca + #727272 + #ffeb5a + #51b2ac diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 2784832..a33d5f1 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -42,4 +42,10 @@ true @color/drawerArrowColor + + +