diff --git a/app/build.gradle b/app/build.gradle index 1b2b0c6..c680c26 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -5,7 +5,7 @@ android { buildToolsVersion "29.0.2" defaultConfig { applicationId "com.example.cmknowledgegraph" - minSdkVersion 15 + minSdkVersion 16 targetSdkVersion 29 versionCode 1 versionName "1.0" @@ -22,24 +22,32 @@ android { targetCompatibility JavaVersion.VERSION_1_8 } } +repositories { + maven { url 'https://jitpack.io' } +} dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.appcompat:appcompat:1.1.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.0' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' api 'com.hankcs:hanlp:portable-1.7.2' implementation 'com.google.android.material:material:1.0.0' -// implementation 'androidx.appcompat:appcompat:1.1.0' -// implementation 'androidx.constraintlayout:constraintlayout:1.1.3' -// testImplementation 'junit:junit:4.12' -// androidTestImplementation 'androidx.test.ext:junit:1.1.0' -// androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' -// api 'com.hankcs:hanlp:portable-1.7.2' -// implementation 'com.google.android.material:material:1.0.0' -// androidTestImplementation 'androidx.test.ext:junit:1.1.1' -// androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' -// implementation fileTree(dir: 'libs', include: ['*.aar', '*.jar'], exclude: []) + + // boombutton按钮 + implementation 'com.nightonke:boommenu:2.1.1' +// tab +// implementation 'devlight.io:navigationtabbar:1.2.5' +// implementation 'com.github.hackware1993:MagicIndicator:1.5.0' + + implementation 'com.github.florent37:materialviewpager:1.2.3' + +//dependencies + implementation 'com.flaviofaria:kenburnsview:1.0.7' + implementation 'com.jpardogo.materialtabstrip:library:1.1.0' + implementation 'com.github.bumptech.glide:glide:4.0.0' + implementation 'com.github.ibrahimsn98:SmoothBottomBar:1.5' + } diff --git a/app/src/main/java/com/example/ChatContentPkg/RecyclerViewFragment.java b/app/src/main/java/com/example/ChatContentPkg/RecyclerViewFragment.java new file mode 100644 index 0000000..ed2155b --- /dev/null +++ b/app/src/main/java/com/example/ChatContentPkg/RecyclerViewFragment.java @@ -0,0 +1,45 @@ +package com.example.ChatContentPkg; + +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import androidx.annotation.Nullable; +import androidx.fragment.app.Fragment; +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.cmknowledgegraph.R; +import com.github.florent37.materialviewpager.header.MaterialViewPagerHeaderDecorator; + +import java.util.ArrayList; +import java.util.List; + +public class RecyclerViewFragment extends Fragment { + public static Fragment newInstance(){return new RecyclerViewFragment();} + final List items = new ArrayList<>(); + static final int ITEMS = 3; + + RecyclerView mRecyclerView; + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + return inflater.inflate(R.layout.fragment_recyclerview, container, false); + } + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + mRecyclerView=view.findViewById(R.id.recyclerView); + for (int i=0;i { + List contents; + public RecyclerViewPagerAdapter(List contents) { + this.contents = contents; + } + public int getItemCount() { + return contents.size(); + } + + @Override + public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + View view = null; + view = LayoutInflater.from(parent.getContext()) + .inflate(R.layout.content_cardview, parent, false); + + return new RecyclerView.ViewHolder(view) { + }; + + } + @Override + public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { + + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/ChatContent.java b/app/src/main/java/com/example/cmknowledgegraph/ChatContent.java new file mode 100644 index 0000000..7f24ec8 --- /dev/null +++ b/app/src/main/java/com/example/cmknowledgegraph/ChatContent.java @@ -0,0 +1,138 @@ +package com.example.cmknowledgegraph; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import androidx.appcompat.app.ActionBar; +import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentStatePagerAdapter; +import androidx.viewpager.widget.ViewPager; + +import com.example.ChatContentPkg.RecyclerViewFragment; +import com.github.florent37.materialviewpager.MaterialViewPager; +import com.github.florent37.materialviewpager.header.HeaderDesign; + +public class ChatContent extends Fragment{ + AppCompatActivity appCompatActivity;//获取到Activity + + public AppCompatActivity getAppCompatActivity() { + return appCompatActivity; + } + + public void setAppCompatActivity(AppCompatActivity appCompatActivity) { + this.appCompatActivity = appCompatActivity; + } + + @Override + public void onAttach(@NonNull Context context) { + super.onAttach(context); + + + } + + @Nullable + @Override + public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + //要加载的layout文件 + return inflater.inflate(R.layout.activity_chat, container, false); + } + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + //包装处理逻辑 + //得到MaterViewPager实例 + MaterialViewPager materialViewPager = (MaterialViewPager) getActivity().findViewById(R.id.materialViewPager); + //为MaterialViewPager添加监听 + materialViewPager.setMaterialViewPagerListener(new MaterialViewPager.Listener() { + @Override + //设置转换动画和图片,颜色 + public HeaderDesign getHeaderDesign(int page) { + switch (page){ + case 0: + return HeaderDesign.fromColorResAndDrawable( + R.color.blue, + getResources().getDrawable(R.drawable.draw5) + ); + case 1: + return HeaderDesign.fromColorResAndDrawable( + R.color.green, + getResources().getDrawable(R.drawable.draw6) + ); + case 2: + return HeaderDesign.fromColorResAndDrawable( + R.color.cyan, + getResources().getDrawable(R.drawable.draw7) + ); + } + + return null; + } + }); + //设置Toolbar + Toolbar toolbar = materialViewPager.getToolbar(); + AppCompatActivity ap = getAppCompatActivity(); + if(toolbar!=null){ + ap.setSupportActionBar(toolbar); + ActionBar actionBar = ap.getSupportActionBar(); + actionBar.setDisplayHomeAsUpEnabled(true); + actionBar.setDisplayShowHomeEnabled(true); + actionBar.setDisplayShowTitleEnabled(true); + actionBar.setDisplayUseLogoEnabled(false); + actionBar.setHomeButtonEnabled(true); + } + //为Viewpager设置适配器 + ViewPager viewPager = materialViewPager.getViewPager(); + + viewPager.setAdapter(new FragmentStatePagerAdapter(getChildFragmentManager()) { + @NonNull + @Override + public Fragment getItem(int position) { + switch (position % 3){ + case 0: + return RecyclerViewFragment.newInstance(); + default: + return RecyclerViewFragment.newInstance(); + + } + } + + @Override + public int getCount() { + return 3; + } + + @Nullable + @Override + public CharSequence getPageTitle(int position) { + switch (position % 3){ + case 0: + return "论坛"; + case 1: + return "drug"; + case 2: + return "药友"; + default: + return "TAPN"; + } + } + }); + materialViewPager.getViewPager().setOffscreenPageLimit(materialViewPager + .getViewPager().getAdapter().getCount()); + materialViewPager.getPagerTitleStrip().setViewPager(materialViewPager.getViewPager()); + + } + + @Override + public void onResume() { + super.onResume(); + } +} diff --git a/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java b/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java index 1345605..81d3e87 100644 --- a/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java +++ b/app/src/main/java/com/example/cmknowledgegraph/MainActivity.java @@ -22,7 +22,10 @@ public class MainActivity extends AppCompatActivity { private TextView mTextMessage; private FragmentTransaction transaction; private FragmentManager fragmentManager; - + AppCompatActivity appCompatActivity; + public final AppCompatActivity getAppCompatActivity(){ + return this; + } private BottomNavigationView.OnNavigationItemSelectedListener mOnNavigationItemSelectedListener = new BottomNavigationView.OnNavigationItemSelectedListener() { @@ -30,22 +33,32 @@ public class MainActivity extends AppCompatActivity { public boolean onNavigationItemSelected(MenuItem item) { + fragmentManager = getSupportFragmentManager(); //使用fragmentmanager和transaction来实现切换效果 - transaction = fragmentManager.beginTransaction(); + transaction = fragmentManager.beginTransaction();//开启事务 +/* +* replace代替相应view +* commit提交事务 +* */ switch (item.getItemId()) { case R.id.home: transaction.replace(R.id.content,new MainContent()); //对应的java class - transaction.commit(); //一定不要忘记commit,否则不会显示 + transaction.commit(); //提交事务 return true; case R.id.search: transaction.replace(R.id.content,new SearchContent()); //对应的java class - transaction.commit(); //一定不要忘记commit,否则不会显示 + transaction.commit(); //提交事务 return true; case R.id.chat: + ChatContent chatContent = new ChatContent(); + chatContent.setAppCompatActivity(getAppCompatActivity()); + transaction.replace(R.id.content,chatContent); + + transaction.commit();//提交事务 return true; case R.id.person: transaction.replace(R.id.content,new PersonContent()); //对应的java class - transaction.commit(); //一定不要忘记commit,否则不会显示 + transaction.commit(); //提交事务 return true; } return false; @@ -55,9 +68,9 @@ public class MainActivity extends AppCompatActivity { // 设置默认进来是tab 显示的页面 private void setDefaultFragment(){ fragmentManager = getSupportFragmentManager(); - transaction = fragmentManager.beginTransaction(); + transaction = fragmentManager.beginTransaction();//开始事务 transaction.replace(R.id.content,new MainContent()); - transaction.commit(); + transaction.commit();//提交事务 } @Override diff --git a/app/src/main/res/drawable/draw1.png b/app/src/main/res/drawable/draw1.png new file mode 100644 index 0000000..a11f953 Binary files /dev/null and b/app/src/main/res/drawable/draw1.png differ diff --git a/app/src/main/res/drawable/draw2.png b/app/src/main/res/drawable/draw2.png new file mode 100644 index 0000000..d4f4200 Binary files /dev/null and b/app/src/main/res/drawable/draw2.png differ diff --git a/app/src/main/res/drawable/draw3.png b/app/src/main/res/drawable/draw3.png new file mode 100644 index 0000000..fd85943 Binary files /dev/null and b/app/src/main/res/drawable/draw3.png differ diff --git a/app/src/main/res/drawable/draw4.jpg b/app/src/main/res/drawable/draw4.jpg new file mode 100644 index 0000000..0a9b542 Binary files /dev/null and b/app/src/main/res/drawable/draw4.jpg differ diff --git a/app/src/main/res/drawable/draw5.jpg b/app/src/main/res/drawable/draw5.jpg new file mode 100644 index 0000000..9c41892 Binary files /dev/null and b/app/src/main/res/drawable/draw5.jpg differ diff --git a/app/src/main/res/drawable/draw6.jpg b/app/src/main/res/drawable/draw6.jpg new file mode 100644 index 0000000..dd586c5 Binary files /dev/null and b/app/src/main/res/drawable/draw6.jpg differ diff --git a/app/src/main/res/drawable/draw7.jpg b/app/src/main/res/drawable/draw7.jpg new file mode 100644 index 0000000..2b36043 Binary files /dev/null and b/app/src/main/res/drawable/draw7.jpg differ diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml new file mode 100644 index 0000000..fad4911 --- /dev/null +++ b/app/src/main/res/layout/activity_chat.xml @@ -0,0 +1,30 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 79a01bf..7e4477f 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -14,6 +14,8 @@ android:layout_weight="1" tools:ignore="MissingConstraints" /> + + + \ No newline at end of file diff --git a/app/src/main/res/layout/content_cardview.xml b/app/src/main/res/layout/content_cardview.xml new file mode 100644 index 0000000..b2ef387 --- /dev/null +++ b/app/src/main/res/layout/content_cardview.xml @@ -0,0 +1,27 @@ + + + xmlns:app="http://schemas.android.com/apk/res-auto" + android:layout_width="match_parent" + android:layout_height="wrap_content"> + + + android:foreground="?android:attr/selectableItemBackgroundBorderless" + + + + diff --git a/app/src/main/res/layout/fragment_recyclerview.xml b/app/src/main/res/layout/fragment_recyclerview.xml new file mode 100644 index 0000000..f719dec --- /dev/null +++ b/app/src/main/res/layout/fragment_recyclerview.xml @@ -0,0 +1,7 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/header_logo.xml b/app/src/main/res/layout/header_logo.xml new file mode 100644 index 0000000..ff7532d --- /dev/null +++ b/app/src/main/res/layout/header_logo.xml @@ -0,0 +1,11 @@ + + + + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 5885930..0d14ba9 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,11 +1,43 @@ - + - + + +