diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_audience_16_0_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_audience_16_0_0_aar.xml new file mode 100644 index 0000000..7871a68 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_audience_16_0_0_aar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_base_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_base_16_0_1_aar.xml new file mode 100644 index 0000000..1d1412c --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_base_16_0_1_aar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_16_0_1_aar.xml new file mode 100644 index 0000000..e67094c --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_basement_16_0_1_aar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_plus_16_0_0_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_plus_16_0_0_aar.xml new file mode 100644 index 0000000..2adb3af --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_plus_16_0_0_aar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_16_0_1_aar.xml b/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_16_0_1_aar.xml new file mode 100644 index 0000000..f48ec23 --- /dev/null +++ b/.idea/libraries/Gradle__com_google_android_gms_play_services_tasks_16_0_1_aar.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/zhuike/build.gradle b/zhuike/build.gradle index 376bfc7..dc3f8ec 100644 --- a/zhuike/build.gradle +++ b/zhuike/build.gradle @@ -43,6 +43,7 @@ dependencies { implementation 'com.android.support:support-vector-drawable:28.0.0' implementation 'com.android.support:support-v4:28.0.0' implementation 'android.arch.lifecycle:extensions:1.1.1' + implementation 'com.google.android.gms:play-services-plus:16.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' diff --git a/zhuike/src/main/AndroidManifest.xml b/zhuike/src/main/AndroidManifest.xml index 771a353..4b72a31 100644 --- a/zhuike/src/main/AndroidManifest.xml +++ b/zhuike/src/main/AndroidManifest.xml @@ -2,6 +2,7 @@ + @@ -17,10 +18,7 @@ - - - + android:theme="@style/ToolBarTheme.NoActionBar"> diff --git a/zhuike/src/main/java/com/deiniu/zhuike/BasicFragment.java b/zhuike/src/main/java/com/deiniu/zhuike/BasicFragment.java index a25587a..77a1040 100644 --- a/zhuike/src/main/java/com/deiniu/zhuike/BasicFragment.java +++ b/zhuike/src/main/java/com/deiniu/zhuike/BasicFragment.java @@ -5,6 +5,9 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -15,15 +18,27 @@ import android.view.ViewGroup; */ public abstract class BasicFragment extends Fragment { protected OnFragmentInteractionListener mListener; - public static String TAG ="need to be replaced"; + public static String TAG = "need to be replaced"; + Main2Activity activity; public BasicFragment() { // Required empty public constructor } + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setFTag(); + // Log.d(TAG,"fragment onCreate "); + activity =(Main2Activity)getActivity(); + // QLog.getLogger().e(dTAG,TAG+" "+ "onCreate"); +// mediumFontSize = activity.getMiddleSizeFont(); + } + @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + Log.d(TAG,"onCreateView"); // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_basic, container, false); } @@ -32,26 +47,30 @@ public abstract class BasicFragment extends Fragment { setFTag(); return TAG; } -// { -// return TAG; -// } -@Override -public void onAttach(Context context) { - super.onAttach(context); - if (context instanceof OnFragmentInteractionListener) { - mListener = (OnFragmentInteractionListener) context; - } else { - throw new RuntimeException(context.toString() - + " must implement OnFragmentInteractionListener"); + + + + @Override + public void onAttach(Context context) { + super.onAttach(context); + if (context instanceof OnFragmentInteractionListener) { + mListener = (OnFragmentInteractionListener) context; + } else { + throw new RuntimeException(context.toString() + + " must implement OnFragmentInteractionListener"); + } } -} + public interface OnFragmentInteractionListener { // TODO: Update argument type and name void onFragmentInteraction(Uri uri); } - public abstract void setFTag(); -// { -// TAG="need to be replaced"; -// -// } + + public abstract void setFTag(); + + @Override + public void onDetach() { + super.onDetach(); + mListener = null; + } } diff --git a/zhuike/src/main/java/com/deiniu/zhuike/BlankFragment.java b/zhuike/src/main/java/com/deiniu/zhuike/BlankFragment.java index c032e6a..ad493b3 100644 --- a/zhuike/src/main/java/com/deiniu/zhuike/BlankFragment.java +++ b/zhuike/src/main/java/com/deiniu/zhuike/BlankFragment.java @@ -4,6 +4,7 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -57,6 +58,7 @@ public class BlankFragment extends BasicFragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Log.d(TAG,"BlankFragment onCreate"); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); @@ -66,6 +68,7 @@ public class BlankFragment extends BasicFragment { @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + Log.d(TAG,"BlankFragment onCreateView"); // Inflate the layout for this fragment return inflater.inflate(R.layout.fragment_blank, container, false); } diff --git a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_Shelf.java b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_Shelf.java new file mode 100644 index 0000000..b581e6f --- /dev/null +++ b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_Shelf.java @@ -0,0 +1,104 @@ +package com.deiniu.zhuike; + +import android.content.Context; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.google.android.gms.plus.PlusOneButton; + +import butterknife.ButterKnife; + +/** + * A fragment with a Google +1 button. + * Activities that contain this fragment must implement the + * {@link Fragment_Shelf.OnFragmentInteractionListener} interface + * to handle interaction events. + * Use the {@link Fragment_Shelf#newInstance} factory method to + * create an instance of this fragment. + */ +public class Fragment_Shelf extends BasicFragment { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + public static String getFTag() { + return "com.deiniu.zhuike.Fragment_Shelf"; + } + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + // The request code must be 0 or greater. + private static final int PLUS_ONE_REQUEST_CODE = 0; + // The URL to +1. Must be a valid URL. + private final String PLUS_ONE_URL = "http://developer.android.com"; + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + private OnFragmentInteractionListener mListener; + + public Fragment_Shelf() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment Fragment_Shelf. + */ + // TODO: Rename and change types and number of parameters + public static Fragment_Shelf newInstance(String param1, String param2) { + Fragment_Shelf fragment = new Fragment_Shelf(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.d(TAG,"Fragment_Shelf fragment onCreate "); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + Log.d(TAG,"fragment_shelf fragment onCreateView "); + View view = inflater.inflate(R.layout.fragment_fragment__shelf, container, false); + ButterKnife.bind(this, view); + + return view; + } + + @Override + public void onResume() { + super.onResume(); + + // Refresh the state of the +1 button each time the activity receives focus. + + } + + + + + @Override + public void setFTag() { + TAG="com.deiniu.zhuike.Fragment_Shelf"; + } + + + + +} diff --git a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_bangdan.java b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_bangdan.java index 3655f02..af2f040 100644 --- a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_bangdan.java +++ b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_bangdan.java @@ -4,6 +4,7 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -17,7 +18,7 @@ import android.view.ViewGroup; * Use the {@link Fragment_bangdan#newInstance} factory method to * create an instance of this fragment. */ -public class Fragment_bangdan extends Fragment { +public class Fragment_bangdan extends BasicFragment { // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; @@ -54,6 +55,7 @@ public class Fragment_bangdan extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Log.d(TAG,"Fragment_bangdan onCreate"); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); @@ -64,45 +66,14 @@ public class Fragment_bangdan extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment + Log.d(TAG,"Fragment_bangdan onCreateView"); return inflater.inflate(R.layout.fragment_fragment_bangdan, container, false); } - // TODO: Rename method, update argument and hook method into UI event - public void onButtonPressed(Uri uri) { - if (mListener != null) { - mListener.onFragmentInteraction(uri); - } - } - @Override - public void onAttach(Context context) { - super.onAttach(context); - if (context instanceof OnFragmentInteractionListener) { - mListener = (OnFragmentInteractionListener) context; - } else { - throw new RuntimeException(context.toString() - + " must implement OnFragmentInteractionListener"); - } + public void setFTag() { + TAG ="com.deiniu.zhuike.Fragment_bangdan"; } - @Override - public void onDetach() { - super.onDetach(); - mListener = null; - } - /** - * This interface must be implemented by activities that contain this - * fragment to allow an interaction in this fragment to be communicated - * to the activity and potentially other fragments contained in that - * activity. - *

- * See the Android Training lesson Communicating with Other Fragments for more information. - */ - public interface OnFragmentInteractionListener { - // TODO: Update argument type and name - void onFragmentInteraction(Uri uri); - } } diff --git a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_bookStore.java b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_bookStore.java new file mode 100644 index 0000000..aae1134 --- /dev/null +++ b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_bookStore.java @@ -0,0 +1,187 @@ +package com.deiniu.zhuike; + +import android.content.Context; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentPagerAdapter; +import android.support.v4.view.PagerAdapter; +import android.support.v4.view.ViewPager; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.youth.banner.Banner; +import com.youth.banner.BannerConfig; +import com.youth.banner.Transformer; +import com.youth.banner.listener.OnBannerListener; +import com.youth.banner.loader.ImageLoader; + +import java.util.ArrayList; +import java.util.List; + +import butterknife.BindView; +import butterknife.ButterKnife; + + +/** + * A simple {@link Fragment} subclass. + * Activities that contain this fragment must implement the + * {@link Fragment_bookStore.OnFragmentInteractionListener} interface + * to handle interaction events. + * Use the {@link Fragment_bookStore#newInstance} factory method to + * create an instance of this fragment. + */ +public class Fragment_bookStore extends BasicFragment { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + public static String getFTag() { + return "com.deiniu.zhuike.Fragment_bookStore"; + } + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + private OnFragmentInteractionListener mListener; + + public Fragment_bookStore() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment Fragment_bookStore. + */ + // TODO: Rename and change types and number of parameters + public static Fragment_bookStore newInstance(String param1, String param2) { + Fragment_bookStore fragment = new Fragment_bookStore(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.d(TAG,"Fragment_bookStore fragment onCreate "); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + Log.d(TAG,"Fragment_bookStore fragment onCreateView "); + View v= inflater.inflate(R.layout.fragment_book_store, container, false); + ButterKnife.bind(this, v); + initTabs(); + + return v; + } + + //---------tabs------------- + @BindView(R.id.viewpager) + ViewPager mViewpager; + private List mFragments; + ArrayList mList; + String[] mTitle; + void initTabs() { + + if(mFragments ==null || mFragments.size() ==0){ + mTitle = new String[]{"精选", "榜单", "书单"}; + mFragments = new ArrayList<>(); + mFragments.add(new Fragment_jingxuan()); + mFragments.add(new Fragment_bangdan()); + mFragments.add(new Fragment_shudan()); + Log.d(TAG,"initial fragments in tabs "); + } + Log.d(TAG,"set viewPager adapter "); + // FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(activity.getSupportFragmentManager()) { 第一次进入没问题,再次进入ViewPager的fragment时里面内容就没了,数据丢失 https://blog.csdn.net/allan_bst/article/details/64920076 + FragmentPagerAdapter mAdapter = new FragmentPagerAdapter(getChildFragmentManager()) { + @Override + public Fragment getItem(int position) { + return mFragments.get(position); + } + + @Override + public int getCount() { + return mFragments.size(); + } + //ViewPager与TabLayout绑定后,这里获取到PageTitle就是Tab的Text + @Override + public CharSequence getPageTitle(int position) { + return mTitle[position]; + } + }; + mViewpager.setAdapter(mAdapter); + + +/* + View viewpagerA = getLayoutInflater().inflate(R.layout.fragment_jingxuan, null); + View viewpagerB = getLayoutInflater().inflate(R.layout.fragment_fragment_bangdan, null); + View viewpagerC = getLayoutInflater().inflate(R.layout.fragment_shudan, null); + mList = new ArrayList<>(); + mList.add(viewpagerA); + mList.add(viewpagerB); + mList.add(viewpagerC); + mViewpager.setAdapter(new PagerAdapter() { + @Override + public int getCount(){ + return mList.size(); + } + + @Override + public boolean isViewFromObject(View view, Object object){ + return view == object; + } + + @Override + public Object instantiateItem(ViewGroup container,int position){ + View view = mList.get(position); + container.addView(view); + return view; + } + + @Override + public void destroyItem(ViewGroup container, int position, Object object){ + container.removeView((View) object); + } + + @Override + public CharSequence getPageTitle(int position){ + return mTitle[position]; + } + }); +*/ + + + + + } + + + + + + @Override + public void setFTag() { + TAG="com.deiniu.zhuike.Fragment_Store"; + } + + + + +} diff --git a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_jingxuan.java b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_jingxuan.java index 90603d9..18a1ec5 100644 --- a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_jingxuan.java +++ b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_jingxuan.java @@ -4,9 +4,23 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.widget.ImageView; + +import com.bumptech.glide.Glide; +import com.youth.banner.Banner; +import com.youth.banner.BannerConfig; +import com.youth.banner.Transformer; +import com.youth.banner.listener.OnBannerListener; +import com.youth.banner.loader.ImageLoader; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.ButterKnife; /** @@ -17,7 +31,7 @@ import android.view.ViewGroup; * Use the {@link Fragment_jingxuan#newInstance} factory method to * create an instance of this fragment. */ -public class Fragment_jingxuan extends Fragment { +public class Fragment_jingxuan extends BasicFragment implements OnBannerListener { // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; @@ -27,10 +41,10 @@ public class Fragment_jingxuan extends Fragment { private String mParam1; private String mParam2; - private OnFragmentInteractionListener mListener; public Fragment_jingxuan() { // Required empty public constructor + } /** @@ -54,6 +68,7 @@ public class Fragment_jingxuan extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Log.d(TAG,"Fragment_jingxuan onCreate"); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); @@ -64,45 +79,90 @@ public class Fragment_jingxuan extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment - return inflater.inflate(R.layout.fragment_jingxuan, container, false); - } - - // TODO: Rename method, update argument and hook method into UI event - public void onButtonPressed(Uri uri) { - if (mListener != null) { - mListener.onFragmentInteraction(uri); - } + Log.d(TAG," Fragment_jingxuan onCreateView"); + View v= inflater.inflate(R.layout.fragment_jingxuan, container, false); + ButterKnife.bind(this, v); + testBanner(banner,this); + testBanner(banner2,new BannerListioner2()); + return v; } @Override - public void onAttach(Context context) { - super.onAttach(context); - if (context instanceof OnFragmentInteractionListener) { - mListener = (OnFragmentInteractionListener) context; - } else { - throw new RuntimeException(context.toString() - + " must implement OnFragmentInteractionListener"); - } + public void setFTag() { + TAG ="com.deiniu.zhuike.Fragment_jingxuan"; } + + @BindView(R.id.banner) + Banner banner; + @BindView(R.id.banner2) + Banner banner2; + + private ArrayList list_path; + private ArrayList list_title; + void testBanner(Banner banner,OnBannerListener listioner) { + + //放图片地址的集合 + list_path = new ArrayList<>(); + //放标题的集合 + list_title = new ArrayList<>(); + + list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg"); + list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg"); + list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg"); + list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg"); + list_title.add("好好学习"); + list_title.add("天天向上"); + list_title.add("热爱劳动"); + list_title.add("不搞对象"); + //设置内置样式,共有六种可以点入方法内逐一体验使用。 + banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE); + //设置图片加载器,图片加载器在下方 + banner.setImageLoader(new MyLoader()); + //设置图片网址或地址的集合 + banner.setImages(list_path); + //设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验 + banner.setBannerAnimation(Transformer.Default); + //设置轮播图的标题集合 + banner.setBannerTitles(list_title); + //设置轮播间隔时间 + banner.setDelayTime(3000); + //设置是否为自动轮播,默认是“是”。 + banner.isAutoPlay(true); + //设置指示器的位置,小点点,左中右。 + banner.setIndicatorGravity(BannerConfig.CENTER) + //以上内容都可写成链式布局,这是轮播图的监听。比较重要。方法在下面。 + .setOnBannerListener(listioner) + //必须最后调用的方法,启动轮播图。 + .start(); + + } + //轮播图的监听方法 + + @Override - public void onDetach() { - super.onDetach(); - mListener = null; + public void OnBannerClick(int position) { + Log.i("第一个banner", "你点了第一个banner 第"+position+"张轮播图"); } - - /** - * This interface must be implemented by activities that contain this - * fragment to allow an interaction in this fragment to be communicated - * to the activity and potentially other fragments contained in that - * activity. - *

- * See the Android Training lesson Communicating with Other Fragments for more information. - */ - public interface OnFragmentInteractionListener { - // TODO: Update argument type and name - void onFragmentInteraction(Uri uri); + //自定义的图片加载器 + private class MyLoader extends ImageLoader { + @Override + public void displayImage(Context context, Object path, ImageView imageView) { + Glide.with(context).load((String) path).into(imageView); + } } } +class BannerListioner1 implements OnBannerListener { + + @Override + public void OnBannerClick(int position) { + Log.i("第一个banner", "你点了第一个banner 第" + position + "张轮播图"); + } +} +class BannerListioner2 implements OnBannerListener { + + @Override + public void OnBannerClick(int position) { + Log.i("第二个banner", "你点了第二个banner 第"+position+"张轮播图"); + } +} \ No newline at end of file diff --git a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_other.java b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_other.java new file mode 100644 index 0000000..9110122 --- /dev/null +++ b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_other.java @@ -0,0 +1,93 @@ +package com.deiniu.zhuike; + +import android.content.Context; +import android.net.Uri; +import android.os.Bundle; +import android.support.v4.app.Fragment; +import android.util.Log; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import butterknife.ButterKnife; + + +/** + * A simple {@link Fragment} subclass. + * Activities that contain this fragment must implement the + * {@link Fragment_other.OnFragmentInteractionListener} interface + * to handle interaction events. + * Use the {@link Fragment_other#newInstance} factory method to + * create an instance of this fragment. + */ +public class Fragment_other extends BasicFragment { + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_PARAM1 = "param1"; + private static final String ARG_PARAM2 = "param2"; + public static String getFTag() { + return "com.deiniu.zhuike.Fragment_other"; + } + // TODO: Rename and change types of parameters + private String mParam1; + private String mParam2; + + private OnFragmentInteractionListener mListener; + + public Fragment_other() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @param param2 Parameter 2. + * @return A new instance of fragment Fragment_other. + */ + // TODO: Rename and change types and number of parameters + public static Fragment_other newInstance(String param1, String param2) { + Fragment_other fragment = new Fragment_other(); + Bundle args = new Bundle(); + args.putString(ARG_PARAM1, param1); + args.putString(ARG_PARAM2, param2); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + Log.d(TAG,"Fragment_other fragment onCreate "); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_PARAM1); + mParam2 = getArguments().getString(ARG_PARAM2); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + Log.d(TAG,"Fragment_other fragment onCreateView "); + View view = inflater.inflate(R.layout.fragment_other, container, false); + ButterKnife.bind(this, view); + return view; + } + + // TODO: Rename method, update argument and hook method into UI event + public void onButtonPressed(Uri uri) { + if (mListener != null) { + mListener.onFragmentInteraction(uri); + } + } + + + + @Override + public void setFTag() { + TAG="com.deiniu.zhuike.Fragment_other"; + } + +} diff --git a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_shudan.java b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_shudan.java index ea8e16a..b9cf95f 100644 --- a/zhuike/src/main/java/com/deiniu/zhuike/Fragment_shudan.java +++ b/zhuike/src/main/java/com/deiniu/zhuike/Fragment_shudan.java @@ -4,6 +4,7 @@ import android.content.Context; import android.net.Uri; import android.os.Bundle; import android.support.v4.app.Fragment; +import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -17,7 +18,7 @@ import android.view.ViewGroup; * Use the {@link Fragment_shudan#newInstance} factory method to * create an instance of this fragment. */ -public class Fragment_shudan extends Fragment { +public class Fragment_shudan extends BasicFragment { // TODO: Rename parameter arguments, choose names that match // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER private static final String ARG_PARAM1 = "param1"; @@ -54,6 +55,7 @@ public class Fragment_shudan extends Fragment { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); + Log.d(TAG,"Fragment_shudan onCreate"); if (getArguments() != null) { mParam1 = getArguments().getString(ARG_PARAM1); mParam2 = getArguments().getString(ARG_PARAM2); @@ -64,45 +66,16 @@ public class Fragment_shudan extends Fragment { public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment + Log.d(TAG,"Fragment_shudan onCreateView"); return inflater.inflate(R.layout.fragment_shudan, container, false); } - // TODO: Rename method, update argument and hook method into UI event - public void onButtonPressed(Uri uri) { - if (mListener != null) { - mListener.onFragmentInteraction(uri); - } - } - @Override - public void onAttach(Context context) { - super.onAttach(context); - if (context instanceof OnFragmentInteractionListener) { - mListener = (OnFragmentInteractionListener) context; - } else { - throw new RuntimeException(context.toString() - + " must implement OnFragmentInteractionListener"); - } + public void setFTag() { + TAG ="com.deiniu.zhuike.Fragment_shudan"; } - @Override - public void onDetach() { - super.onDetach(); - mListener = null; - } - /** - * This interface must be implemented by activities that contain this - * fragment to allow an interaction in this fragment to be communicated - * to the activity and potentially other fragments contained in that - * activity. - *

- * See the Android Training lesson Communicating with Other Fragments for more information. - */ - public interface OnFragmentInteractionListener { - // TODO: Update argument type and name - void onFragmentInteraction(Uri uri); - } + + } diff --git a/zhuike/src/main/java/com/deiniu/zhuike/Main2Activity.java b/zhuike/src/main/java/com/deiniu/zhuike/Main2Activity.java index 9bd8467..192e692 100644 --- a/zhuike/src/main/java/com/deiniu/zhuike/Main2Activity.java +++ b/zhuike/src/main/java/com/deiniu/zhuike/Main2Activity.java @@ -2,6 +2,7 @@ package com.deiniu.zhuike; import android.content.Context; import android.net.Uri; +import android.nfc.Tag; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.design.widget.BottomNavigationView; @@ -13,6 +14,7 @@ import android.support.v4.app.FragmentTransaction; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.Log; +import android.view.KeyEvent; import android.view.View; import android.support.design.widget.NavigationView; import android.support.v4.view.GravityCompat; @@ -44,8 +46,8 @@ import java.util.ArrayList; import butterknife.BindView; import butterknife.ButterKnife; public class Main2Activity extends AppCompatActivity - implements NavigationView.OnNavigationItemSelectedListener , OnBannerListener, BasicFragment.OnFragmentInteractionListener { - + implements NavigationView.OnNavigationItemSelectedListener , BasicFragment.OnFragmentInteractionListener { + public MyApp app ; @BindView(R.id.toolbar) Toolbar toolbar; @@ -74,8 +76,8 @@ public class Main2Activity extends AppCompatActivity NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view); navigationView.setNavigationItemSelectedListener(this); - - initTabs(); + showHome(); + // initTabs(); // banner = (Banner) findViewById(R.id.banner); @@ -98,9 +100,9 @@ public class Main2Activity extends AppCompatActivity ft.replace(R.id.realtabcontent, fragment,fragmentTag); // // QLog.getLogger().d(dTAG, " before commit,getSupportFragmentManager().findFragmentByTag: "+fragmentTag +", result is:"+getSupportFragmentManager().findFragmentByTag(fragmentTag)); - Fragment lastFragmeng = getSupportFragmentManager().findFragmentByTag( currentActiveFragment); + // Fragment lastFragmeng = getSupportFragmentManager().findFragmentByTag( currentActiveFragment); - ft.addToBackStack(null); //add to backstack. + ft.addToBackStack(null); //add to backstack. } @@ -253,7 +255,7 @@ public class Main2Activity extends AppCompatActivity return true; case R.id.navigation_notifications: mTextMessage.setText(R.string.title_notifications); - showNotes(); + showOther(); return true; } @@ -263,74 +265,26 @@ public class Main2Activity extends AppCompatActivity private void showHome() { - BlankFragment blankFragment = (BlankFragment) getSupportFragmentManager() - .findFragmentByTag(BlankFragment.getFTag()); - if(blankFragment==null) blankFragment =new BlankFragment(); - showFragment(blankFragment,BlankFragment.getFTag()); + Fragment_Shelf fragment_Shelf = (Fragment_Shelf) getSupportFragmentManager() + .findFragmentByTag(Fragment_Shelf.getFTag()); + if(fragment_Shelf==null) fragment_Shelf =new Fragment_Shelf(); + showFragment(fragment_Shelf,Fragment_Shelf.getFTag()); } private void showBookStore() { + Fragment_bookStore fragment = (Fragment_bookStore) getSupportFragmentManager() + .findFragmentByTag(Fragment_bookStore.getFTag()); + if(fragment ==null) fragment =new Fragment_bookStore(); + showFragment(fragment ,Fragment_bookStore.getFTag()); } - private void showNotes() { + private void showOther() { + Fragment_other fragment = (Fragment_other) getSupportFragmentManager() + .findFragmentByTag(Fragment_other.getFTag()); + if(fragment ==null) fragment =new Fragment_other(); + showFragment(fragment ,Fragment_other.getFTag()); } - /* - @BindView(R.id.banner) - Banner banner; - @BindView(R.id.banner2) - Banner banner2; - */ - private ArrayList list_path; - private ArrayList list_title; - void testBanner(Banner banner) { - //放图片地址的集合 - list_path = new ArrayList<>(); - //放标题的集合 - list_title = new ArrayList<>(); - - list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic21363tj30ci08ct96.jpg"); - list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic259ohaj30ci08c74r.jpg"); - list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2b16zuj30ci08cwf4.jpg"); - list_path.add("http://ww4.sinaimg.cn/large/006uZZy8jw1faic2e7vsaj30ci08cglz.jpg"); - list_title.add("好好学习"); - list_title.add("天天向上"); - list_title.add("热爱劳动"); - list_title.add("不搞对象"); - //设置内置样式,共有六种可以点入方法内逐一体验使用。 - banner.setBannerStyle(BannerConfig.CIRCLE_INDICATOR_TITLE_INSIDE); - //设置图片加载器,图片加载器在下方 - banner.setImageLoader(new MyLoader()); - //设置图片网址或地址的集合 - banner.setImages(list_path); - //设置轮播的动画效果,内含多种特效,可点入方法内查找后内逐一体验 - banner.setBannerAnimation(Transformer.Default); - //设置轮播图的标题集合 - banner.setBannerTitles(list_title); - //设置轮播间隔时间 - banner.setDelayTime(3000); - //设置是否为自动轮播,默认是“是”。 - banner.isAutoPlay(true); - //设置指示器的位置,小点点,左中右。 - banner.setIndicatorGravity(BannerConfig.CENTER) - //以上内容都可写成链式布局,这是轮播图的监听。比较重要。方法在下面。 - .setOnBannerListener(this) - //必须最后调用的方法,启动轮播图。 - .start(); - - } - //轮播图的监听方法 - @Override - public void OnBannerClick(int position) { - Log.i("tag", "你点了第"+position+"张轮播图"); - } - //自定义的图片加载器 - private class MyLoader extends ImageLoader { - @Override - public void displayImage(Context context, Object path, ImageView imageView) { - Glide.with(context).load((String) path).into(imageView); - } - } private void getDataFromServer() { //url String url1 = "http://api.kkmh.com/v1/topic_new/discovery_list?gender=0&sa_event=eyJwcm9qZWN0Ijoia%203VhaWthbl9hcHAiLCJ0aW1lIjoxNDg3ODM5MDM5MzE1LCJwcm9wZXJ0aWVzIjp7IkhvbWVwYWdlVGFiTmFtZSI6IueDremXqCIsIlZDb21t%20dW5pdHlUYWJOYW1lIjoi54Ot6ZeoIiwiJG9zX3ZlcnNpb24iOiI0LjIuMiIsIkdlbmRlclR5cGUiOiLlpbPniYgiLCJGcm9tRmluZENhdGVnb%203J5VGFiTmFtZSI6IuWFqOmDqCIsIklzQXV0b0xvYWQiOmZhbHNlLCIkbGliX3ZlcnNpb24iOiIxLjYuMzQiLCIkbmV0d29ya190eXBlIjoiV0l%20GSSIsIiR3aWZpIjp0cnVlLCIkbWFudWZhY3R1cmVyIjoic2Ftc3VuZyIsIkZyb21GaW5kVGFiTmFtZSI6IuaOqOiNkCIsIiRzY3JlZW%205faGVpZ2h0Ijo1NzYsIkNhdGVnb3J5Ijoi5peg5rOV6I635Y-WIiwiSG9tZXBhZ2VVcGRhdGVEYXRlIjowLCJQcm9wZXJ0eUV2ZW5%200IjoiUmVhZEZpbmRQYWdlIiwiRmluZFRhYk5hbWUiOiLmjqjojZAiLCJhYnRlc3RfZ3JvdXAiOjQ2LCIkc2NyZWVuX3dpZHRoIjo%20xMDI0LCJGaW5kQ2F0ZWdvcnlUYWJOYW1lIjoi5YWo6YOoIiwiJG9zIjoiQW5kcm9pZCIsIlRyaWdnZXJQYWdlIjoiSG9tZVBhZ2%20UiLCIkY2FycmllciI6IkNNQ0MiLCIkbW9kZWwiOiJHVC1QNTIxMCIsIiRhcHBfdmVyc2lvbiI6IjMuOC4xIn0sInR5cGUiOiJ0cmFja%20yIsImRpc3RpbmN0X2lkIjoiQTo5MDUxMDQyNzYzNzU1MTA5Iiwib3JpZ2luYWxfaWQiOiJBOjkwNTEwNDI3NjM3NTUxMDkiLCJldmV%20udCI6IlJlYWRGaW5kUGFnZSJ9"; @@ -374,58 +328,49 @@ public class Main2Activity extends AppCompatActivity } - //---------tabs------------- - @BindView(R.id.viewpager) - ViewPager mViewpager; - private ArrayList mList; - private String[] mTitle; - - void initTabs() { - - View viewpagerA = getLayoutInflater().inflate(R.layout.fragment_jingxuan, null); - View viewpagerB = getLayoutInflater().inflate(R.layout.fragment_fragment_bangdan, null); - View viewpagerC = getLayoutInflater().inflate(R.layout.fragment_shudan, null); - - mList = new ArrayList<>(); - mList.add(viewpagerA); - mList.add(viewpagerB); - mList.add(viewpagerC); - - mTitle = new String[]{"精选", "榜单", "书单"}; - - - mViewpager.setAdapter(new PagerAdapter() { - @Override - public int getCount(){ - return mList.size(); - } - - @Override - public boolean isViewFromObject(View view, Object object){ - return view == object; - } - - @Override - public Object instantiateItem(ViewGroup container,int position){ - View view = mList.get(position); - container.addView(view); - return view; - } - - @Override - public void destroyItem(ViewGroup container, int position, Object object){ - container.removeView((View) object); - } - - @Override - public CharSequence getPageTitle(int position){ - return mTitle[position]; - } - }); - } @Override public void onFragmentInteraction(Uri uri) { Toast.makeText(this,"交流,角楼",Toast.LENGTH_LONG).show(); } + + + long firstTime =0; + @Override + public boolean onKeyUp(int keyCode, KeyEvent event) { + if (keyCode == KeyEvent.KEYCODE_BACK) { + + int cnt=0; + + + long secondTime = System.currentTimeMillis(); + if (secondTime - firstTime > 800) {//如果两次按键时间间隔大于800毫秒,则不退出 + String msg= "再按一次将退出" ; + Toast.makeText( this, msg, Toast.LENGTH_SHORT).show(); + firstTime = secondTime;//更新firstTime + + return true; + } else { + + app.exit(); + return false; + } + } + try{ + return super.onKeyUp(keyCode, event); + } + catch(Exception e){ + Log.d("mainActivity","onkeyup出错" ); + return true; + } + } + + + + + + + + + } diff --git a/zhuike/src/main/java/com/deiniu/zhuike/MyApp.java b/zhuike/src/main/java/com/deiniu/zhuike/MyApp.java index dc2bc04..235ae7d 100644 --- a/zhuike/src/main/java/com/deiniu/zhuike/MyApp.java +++ b/zhuike/src/main/java/com/deiniu/zhuike/MyApp.java @@ -9,7 +9,10 @@ public class MyApp extends Application { public void onCreate() { super.onCreate(); x.Ext.init(this); - // x.Ext.setDebug(false); //输出debug日志,开启会影响性能 + x.Ext.setDebug(false); //输出debug日志,开启会影响性能 } + public boolean exit() { + return true; + } } diff --git a/zhuike/src/main/res/layout/app_bar_main2.xml b/zhuike/src/main/res/layout/app_bar_main2.xml index 5b6ac76..21a2163 100644 --- a/zhuike/src/main/res/layout/app_bar_main2.xml +++ b/zhuike/src/main/res/layout/app_bar_main2.xml @@ -33,18 +33,7 @@ - + + + + + + + + + + + \ No newline at end of file diff --git a/zhuike/src/main/res/layout/fragment_fragment__shelf.xml b/zhuike/src/main/res/layout/fragment_fragment__shelf.xml new file mode 100644 index 0000000..f59dd2f --- /dev/null +++ b/zhuike/src/main/res/layout/fragment_fragment__shelf.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/zhuike/src/main/res/layout/fragment_fragment_bangdan.xml b/zhuike/src/main/res/layout/fragment_fragment_bangdan.xml index 55c1bce..6e91224 100644 --- a/zhuike/src/main/res/layout/fragment_fragment_bangdan.xml +++ b/zhuike/src/main/res/layout/fragment_fragment_bangdan.xml @@ -9,6 +9,6 @@ + android:text="榜单。。。。。。榜单" /> \ No newline at end of file diff --git a/zhuike/src/main/res/layout/fragment_jingxuan.xml b/zhuike/src/main/res/layout/fragment_jingxuan.xml index 4b142be..c7d52f2 100644 --- a/zhuike/src/main/res/layout/fragment_jingxuan.xml +++ b/zhuike/src/main/res/layout/fragment_jingxuan.xml @@ -7,6 +7,13 @@ tools:context=".Fragment_jingxuan"> + + + - - - @@ -40,34 +36,8 @@ android:id="@+id/banner2" android:layout_width="match_parent" android:layout_height="150dp" /> - - - - - - + + + + + + + + + + \ No newline at end of file diff --git a/zhuike/src/main/res/layout/fragment_shudan.xml b/zhuike/src/main/res/layout/fragment_shudan.xml index 3992b35..5e77a2a 100644 --- a/zhuike/src/main/res/layout/fragment_shudan.xml +++ b/zhuike/src/main/res/layout/fragment_shudan.xml @@ -9,6 +9,6 @@ + android:text="书单。。。。" /> \ No newline at end of file diff --git a/zhuike/src/main/res/layout/realcontent.xml b/zhuike/src/main/res/layout/realcontent.xml index 1fc7a3b..864bb9e 100644 --- a/zhuike/src/main/res/layout/realcontent.xml +++ b/zhuike/src/main/res/layout/realcontent.xml @@ -16,21 +16,10 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" - - - - @@ -44,6 +33,7 @@ app:layout_behavior="@string/appbar_scrolling_view_behavior" android:layout_marginStart="0dp" android:layout_marginEnd="0dp" android:background="?android:attr/windowBackground" + android:layout_alignParentBottom="true" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" diff --git a/zhuike/zhuike.iml b/zhuike/zhuike.iml index 95441b0..364acf7 100644 --- a/zhuike/zhuike.iml +++ b/zhuike/zhuike.iml @@ -143,6 +143,7 @@ + @@ -155,6 +156,7 @@ + @@ -174,9 +176,11 @@ + + @@ -185,5 +189,6 @@ + \ No newline at end of file