From 288ce9cd0cc2aaf34f6d908f77856ef6ed3366a4 Mon Sep 17 00:00:00 2001 From: jianbo <263303411@qq.com> Date: Fri, 21 Aug 2020 18:09:37 +0800 Subject: [PATCH] d --- .idea/modules.xml | 1 + app/build.gradle | 4 + app/src/main/AndroidManifest.xml | 60 ++-- .../seven/base/BaseActivity.java | 309 +++++++++-------- .../seven/base/BaseRecycleAdapter.java | 257 ++++++++++++++ .../seven/base/BaseTreeActivity.java | 10 - .../seven/base/BaseViewHolder.java | 34 ++ .../seven/base/BasetwoFragment.java | 280 ++++++++++++++++ .../administrator/seven/common/Constants.java | 88 +++++ .../seven/main/activity/MainActivity.java | 54 ++- .../main/find/CloundSolutionActivity.java | 220 ++++++++++++ .../seven/main/find/CommentActivity.java | 27 ++ .../seven/main/find/ConversationActivity.java | 26 ++ .../seven/main/find/FindFragment.java | 119 +++++++ .../seven/main/find/MainActivitytwot.java | 143 ++++++++ .../seven/main/find/MapFragment.java | 6 - .../main/find/OnSatisfactionListener.java | 9 + .../seven/main/find/PriLetFragment.java | 63 ++++ .../seven/main/find/QuestionsFragment.java | 120 +++++++ .../main/find/adapter/FindListAdapter.java | 61 ++++ .../main/find/adapter/PrivateletAdapter.java | 61 ++++ .../main/find/adapter/QuestionsAdapter.java | 230 +++++++++++++ .../main/find/entity/QuestionsEntity.java | 92 +++++ .../find/mvp/contract/QuestionsContract.java | 50 +++ .../find/mvp/model/QuestionsModelImpl.java | 42 +++ .../mvp/presenter/QuestionsPresenterImpl.java | 56 ++++ .../seven/main/find/ui/CommentFragment.java | 118 +++++++ .../seven/main/find/ui/FindFragmenttwo.java | 118 +++++++ .../main/find/ui/PrivateletterFragment.java | 121 +++++++ .../seven/main/kehu/activity/ShowAty.java | 26 ++ .../seven/main/my/MyFragment.java | 2 + ...SendFragment.java => LivebroFragment.java} | 5 +- .../seven/network/http/MyApi.java | 16 + .../seven/utils/StatusBarUtil.java | 205 ++++++++++++ .../seven/utils/StatusBarUtils.java | 49 --- .../seven/widget/PastEditText.java | 44 +++ .../drawable-v21/selector_btn_green_bg.xml | 8 +- .../res/drawable-xhdpi/chat_left_bg.9.png | Bin 0 -> 1128 bytes .../res/drawable-xhdpi/chat_left_qp.9.png | Bin 0 -> 488 bytes .../res/drawable-xhdpi/chat_right_bg.9.png | Bin 0 -> 1194 bytes .../res/drawable-xhdpi/chat_right_qp.9.png | Bin 0 -> 567 bytes .../res/drawable/drawable_edit_normal.xml | 9 + .../res/layout/activity_clound_solution.xml | 46 +++ app/src/main/res/layout/activity_comment.xml | 19 ++ .../main/res/layout/activity_conversation.xml | 19 ++ app/src/main/res/layout/activity_main.xml | 1 + app/src/main/res/layout/activity_mainsss.xml | 58 ++++ app/src/main/res/layout/criclefragment.xml | 107 ++++++ app/src/main/res/layout/findfragment.xml | 64 ++++ app/src/main/res/layout/findlist_item.xml | 120 +++++++ app/src/main/res/layout/findtwo_activity.xml | 7 + app/src/main/res/layout/findtwo_fragment.xml | 20 ++ .../main/res/layout/fragment_questions.xml | 54 +++ .../main/res/layout/item_question_left.xml | 48 +++ .../main/res/layout/item_question_right.xml | 34 ++ app/src/main/res/layout/item_rcv_empty.xml | 12 + .../main/res/layout/item_rcv_load_and_all.xml | 56 ++++ app/src/main/res/layout/priletfragment.xml | 78 +++++ app/src/main/res/layout/private_let_item.xml | 120 +++++++ app/src/main/res/mipmap-hdpi/icon_live.png | Bin 0 -> 789 bytes app/src/main/res/mipmap-hdpi/icon_watch_k.png | Bin 0 -> 1723 bytes .../main/res/mipmap-hdpi/marking_down_pic.png | Bin 0 -> 305 bytes app/src/main/res/mipmap-mdpi/icon_live.png | Bin 0 -> 574 bytes app/src/main/res/mipmap-mdpi/icon_watch_k.png | Bin 0 -> 1123 bytes .../main/res/mipmap-mdpi/marking_down_pic.png | Bin 0 -> 194 bytes app/src/main/res/mipmap-xhdpi/icon_live.png | Bin 0 -> 778 bytes .../main/res/mipmap-xhdpi/icon_watch_k.png | Bin 0 -> 2165 bytes .../res/mipmap-xhdpi/marking_down_pic.png | Bin 0 -> 314 bytes .../res/mipmap-xxhdpi/fangan_location.png | Bin 0 -> 2748 bytes app/src/main/res/mipmap-xxhdpi/icon_live.png | Bin 0 -> 1627 bytes .../main/res/mipmap-xxhdpi/icon_watch_k.png | Bin 0 -> 3772 bytes .../res/mipmap-xxhdpi/marking_down_pic.png | Bin 0 -> 536 bytes .../main/res/mipmap-xxhdpi/message_remind.png | Bin 0 -> 2110 bytes app/src/main/res/mipmap-xxxhdpi/icon_live.png | Bin 0 -> 1460 bytes .../main/res/mipmap-xxxhdpi/icon_watch_k.png | Bin 0 -> 2939 bytes .../res/mipmap-xxxhdpi/marking_down_pic.png | Bin 0 -> 626 bytes app/src/main/res/values/styles.xml | 2 + build.gradle | 2 +- citypicker/.gitignore | 1 + citypicker/build.gradle | 34 ++ citypicker/proguard-rules.pro | 17 + .../citypicker/ExampleInstrumentedTest.java | 26 ++ citypicker/src/main/AndroidManifest.xml | 11 + citypicker/src/main/assets/china_cities_v2.db | Bin 0 -> 122880 bytes .../com/zaaach/citypicker/CityPicker.java | 132 ++++++++ .../citypicker/CityPickerDialogFragment.java | 316 ++++++++++++++++++ .../citypicker/adapter/CityListAdapter.java | 261 +++++++++++++++ .../citypicker/adapter/GridListAdapter.java | 90 +++++ .../citypicker/adapter/InnerListener.java | 8 + .../citypicker/adapter/OnPickListener.java | 9 + .../decoration/DividerItemDecoration.java | 45 +++ .../decoration/GridItemDecoration.java | 27 ++ .../decoration/SectionItemDecoration.java | 146 ++++++++ .../com/zaaach/citypicker/db/DBConfig.java | 14 + .../com/zaaach/citypicker/db/DBManager.java | 130 +++++++ .../com/zaaach/citypicker/model/City.java | 77 +++++ .../com/zaaach/citypicker/model/HotCity.java | 8 + .../zaaach/citypicker/model/LocateState.java | 16 + .../zaaach/citypicker/model/LocatedCity.java | 8 + .../zaaach/citypicker/util/ScreenUtil.java | 83 +++++ .../zaaach/citypicker/view/SideIndexBar.java | 171 ++++++++++ .../src/main/res/anim/cp_push_bottom_in.xml | 7 + .../src/main/res/anim/cp_push_bottom_out.xml | 7 + .../src/main/res/drawable/cp_grid_item_bg.xml | 11 + .../src/main/res/drawable/cp_overlay_bg.xml | 12 + .../main/res/layout/cp_dialog_city_picker.xml | 40 +++ .../src/main/res/layout/cp_empty_view.xml | 30 ++ .../main/res/layout/cp_grid_item_layout.xml | 18 + .../layout/cp_list_item_default_layout.xml | 15 + .../res/layout/cp_list_item_hot_layout.xml | 12 + .../layout/cp_list_item_location_layout.xml | 28 ++ .../src/main/res/layout/cp_search_view.xml | 55 +++ .../res/mipmap-xxhdpi/cp_icon_clear_all.png | Bin 0 -> 1283 bytes .../main/res/mipmap-xxhdpi/cp_icon_empty.png | Bin 0 -> 3617 bytes .../src/main/res/values-w820dp/dimens.xml | 6 + citypicker/src/main/res/values/attrs.xml | 41 +++ citypicker/src/main/res/values/colors.xml | 13 + citypicker/src/main/res/values/dimens.xml | 27 ++ citypicker/src/main/res/values/strings.xml | 8 + citypicker/src/main/res/values/styles.xml | 61 ++++ .../zaaach/citypicker/ExampleUnitTest.java | 17 + settings.gradle | 2 +- 122 files changed, 5820 insertions(+), 230 deletions(-) create mode 100644 app/src/main/java/com/example/administrator/seven/base/BaseRecycleAdapter.java create mode 100644 app/src/main/java/com/example/administrator/seven/base/BaseViewHolder.java create mode 100644 app/src/main/java/com/example/administrator/seven/base/BasetwoFragment.java create mode 100644 app/src/main/java/com/example/administrator/seven/common/Constants.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/CloundSolutionActivity.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/CommentActivity.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/ConversationActivity.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/FindFragment.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/MainActivitytwot.java delete mode 100644 app/src/main/java/com/example/administrator/seven/main/find/MapFragment.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/OnSatisfactionListener.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/PriLetFragment.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/QuestionsFragment.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/adapter/FindListAdapter.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/adapter/PrivateletAdapter.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/adapter/QuestionsAdapter.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/entity/QuestionsEntity.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/mvp/contract/QuestionsContract.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/mvp/model/QuestionsModelImpl.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/mvp/presenter/QuestionsPresenterImpl.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/ui/CommentFragment.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/ui/FindFragmenttwo.java create mode 100644 app/src/main/java/com/example/administrator/seven/main/find/ui/PrivateletterFragment.java rename app/src/main/java/com/example/administrator/seven/main/zhibo/{SendFragment.java => LivebroFragment.java} (93%) create mode 100644 app/src/main/java/com/example/administrator/seven/utils/StatusBarUtil.java delete mode 100644 app/src/main/java/com/example/administrator/seven/utils/StatusBarUtils.java create mode 100644 app/src/main/java/com/example/administrator/seven/widget/PastEditText.java create mode 100644 app/src/main/res/drawable-xhdpi/chat_left_bg.9.png create mode 100644 app/src/main/res/drawable-xhdpi/chat_left_qp.9.png create mode 100644 app/src/main/res/drawable-xhdpi/chat_right_bg.9.png create mode 100644 app/src/main/res/drawable-xhdpi/chat_right_qp.9.png create mode 100644 app/src/main/res/drawable/drawable_edit_normal.xml create mode 100644 app/src/main/res/layout/activity_clound_solution.xml create mode 100644 app/src/main/res/layout/activity_comment.xml create mode 100644 app/src/main/res/layout/activity_conversation.xml create mode 100644 app/src/main/res/layout/activity_mainsss.xml create mode 100644 app/src/main/res/layout/criclefragment.xml create mode 100644 app/src/main/res/layout/findfragment.xml create mode 100644 app/src/main/res/layout/findlist_item.xml create mode 100644 app/src/main/res/layout/findtwo_activity.xml create mode 100644 app/src/main/res/layout/findtwo_fragment.xml create mode 100644 app/src/main/res/layout/fragment_questions.xml create mode 100644 app/src/main/res/layout/item_question_left.xml create mode 100644 app/src/main/res/layout/item_question_right.xml create mode 100644 app/src/main/res/layout/item_rcv_empty.xml create mode 100644 app/src/main/res/layout/item_rcv_load_and_all.xml create mode 100644 app/src/main/res/layout/priletfragment.xml create mode 100644 app/src/main/res/layout/private_let_item.xml create mode 100644 app/src/main/res/mipmap-hdpi/icon_live.png create mode 100644 app/src/main/res/mipmap-hdpi/icon_watch_k.png create mode 100644 app/src/main/res/mipmap-hdpi/marking_down_pic.png create mode 100644 app/src/main/res/mipmap-mdpi/icon_live.png create mode 100644 app/src/main/res/mipmap-mdpi/icon_watch_k.png create mode 100644 app/src/main/res/mipmap-mdpi/marking_down_pic.png create mode 100644 app/src/main/res/mipmap-xhdpi/icon_live.png create mode 100644 app/src/main/res/mipmap-xhdpi/icon_watch_k.png create mode 100644 app/src/main/res/mipmap-xhdpi/marking_down_pic.png create mode 100644 app/src/main/res/mipmap-xxhdpi/fangan_location.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_live.png create mode 100644 app/src/main/res/mipmap-xxhdpi/icon_watch_k.png create mode 100644 app/src/main/res/mipmap-xxhdpi/marking_down_pic.png create mode 100644 app/src/main/res/mipmap-xxhdpi/message_remind.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/icon_live.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/icon_watch_k.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/marking_down_pic.png create mode 100644 citypicker/.gitignore create mode 100644 citypicker/build.gradle create mode 100644 citypicker/proguard-rules.pro create mode 100644 citypicker/src/androidTest/java/com/zaaach/citypicker/ExampleInstrumentedTest.java create mode 100644 citypicker/src/main/AndroidManifest.xml create mode 100644 citypicker/src/main/assets/china_cities_v2.db create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/CityPicker.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/CityPickerDialogFragment.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/adapter/CityListAdapter.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/adapter/GridListAdapter.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/adapter/InnerListener.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/adapter/OnPickListener.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/adapter/decoration/DividerItemDecoration.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/adapter/decoration/GridItemDecoration.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/adapter/decoration/SectionItemDecoration.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/db/DBConfig.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/db/DBManager.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/model/City.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/model/HotCity.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/model/LocateState.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/model/LocatedCity.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/util/ScreenUtil.java create mode 100644 citypicker/src/main/java/com/zaaach/citypicker/view/SideIndexBar.java create mode 100644 citypicker/src/main/res/anim/cp_push_bottom_in.xml create mode 100644 citypicker/src/main/res/anim/cp_push_bottom_out.xml create mode 100644 citypicker/src/main/res/drawable/cp_grid_item_bg.xml create mode 100644 citypicker/src/main/res/drawable/cp_overlay_bg.xml create mode 100644 citypicker/src/main/res/layout/cp_dialog_city_picker.xml create mode 100644 citypicker/src/main/res/layout/cp_empty_view.xml create mode 100644 citypicker/src/main/res/layout/cp_grid_item_layout.xml create mode 100644 citypicker/src/main/res/layout/cp_list_item_default_layout.xml create mode 100644 citypicker/src/main/res/layout/cp_list_item_hot_layout.xml create mode 100644 citypicker/src/main/res/layout/cp_list_item_location_layout.xml create mode 100644 citypicker/src/main/res/layout/cp_search_view.xml create mode 100644 citypicker/src/main/res/mipmap-xxhdpi/cp_icon_clear_all.png create mode 100644 citypicker/src/main/res/mipmap-xxhdpi/cp_icon_empty.png create mode 100644 citypicker/src/main/res/values-w820dp/dimens.xml create mode 100644 citypicker/src/main/res/values/attrs.xml create mode 100644 citypicker/src/main/res/values/colors.xml create mode 100644 citypicker/src/main/res/values/dimens.xml create mode 100644 citypicker/src/main/res/values/strings.xml create mode 100644 citypicker/src/main/res/values/styles.xml create mode 100644 citypicker/src/test/java/com/zaaach/citypicker/ExampleUnitTest.java diff --git a/.idea/modules.xml b/.idea/modules.xml index b7b8e95..29bb906 100644 --- a/.idea/modules.xml +++ b/.idea/modules.xml @@ -5,6 +5,7 @@ + \ No newline at end of file diff --git a/app/build.gradle b/app/build.gradle index 8d136a0..15e80cd 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -26,6 +26,7 @@ dependencies { implementation 'androidx.legacy:legacy-support-v4:1.0.0' implementation 'com.google.android.material:material:1.0.0' implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.lifecycle:lifecycle-extensions:2.0.0' testImplementation 'junit:junit:4.12' androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.0' @@ -60,4 +61,7 @@ dependencies { // implementation 'com.contrarywind:Android-PickerView:3.2.6' implementation 'com.contrarywind:Android-PickerView:4.1.9' implementation files('libs/fastjson-1.1.43.android.jar') + implementation 'org.jsoup:jsoup:1.10.1' + api 'com.amap.api:location:latest.integration' + implementation project(':citypicker') } diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d0e51eb..e3b6390 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,10 +1,12 @@ + + - - - + + + - - + + + + + + - - - + - - - + + + - - - - + + + + + + - - - + android:screenOrientation="portrait"> - - + + + + + + - + + - + \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java b/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java index 3c7f724..b31f2f8 100644 --- a/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java +++ b/app/src/main/java/com/example/administrator/seven/base/BaseActivity.java @@ -1,93 +1,167 @@ package com.example.administrator.seven.base; +import android.Manifest; import android.app.Activity; -import android.app.ProgressDialog; import android.content.Context; import android.content.Intent; -import android.graphics.Color; +import android.content.pm.PackageManager; +import android.content.res.Configuration; +import android.net.Uri; import android.os.Bundle; import android.text.TextPaint; -import android.util.TypedValue; +import android.util.DisplayMetrics; import android.view.View; -import android.view.inputmethod.InputMethodManager; +import android.view.WindowManager; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.example.administrator.seven.R; +import com.example.administrator.seven.dialog.LoadingDialog; import com.example.administrator.seven.dialog.PersonnelDialogHelptwo; -import com.example.administrator.seven.utils.StatusBarUtils; +import com.example.administrator.seven.utils.NetUtils; +import com.example.administrator.seven.utils.StatusBarUtil; +import com.example.administrator.seven.utils.ToastUtils; -import androidx.annotation.IdRes; -import androidx.annotation.Nullable; -import androidx.annotation.StringRes; -import androidx.appcompat.app.AppCompatActivity; -import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; +import androidx.annotation.ColorRes; +import androidx.core.app.ActivityCompat; +import androidx.core.content.ContextCompat; +import androidx.fragment.app.FragmentActivity; /** - * 日期:2017.01.03 - *

- * 作者:xudiwei - *

- * 描述:Baseactivity添加相关的方法 - * - * + * @author: qndroid + * @function: 所有Activity的基类,用来处理一些公共事件,如:数据统计 + * @date: 16/3/10 */ -public class BaseActivity extends AppCompatActivity { +public abstract class BaseActivity extends FragmentActivity { - private ProgressDialog mProgressDialog; + private LoadingDialog mProgressDialog; + public static final int REQUEST_CALL_PERMISSION = 10111; //拨号请求码 + protected final String TAG = this.getClass().getSimpleName(); + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + reverseStatusColor(); + StatusBarUtil.transparencyBar(this); //设置状态栏全透明 + StatusBarUtil.StatusBarLightMode(this); //设置白底黑字 + initFontScale(); + } + + + + /** + * 拨打电话(直接拨打) + * + * @param telPhone 电话 + */ + public void call(String telPhone) { + if (checkReadPermission(Manifest.permission.CALL_PHONE, REQUEST_CALL_PERMISSION)) { + Intent intent = new Intent(); + intent.setAction(Intent.ACTION_CALL); + Uri phoneNum = Uri.parse("tel:" + telPhone); + intent.setData(phoneNum); + startActivity(intent); + } + + } + + /** + * 判断是否有某项权限 + * + * @param string_permission 权限 + * @param request_code 请求码 + * @return + */ + public boolean checkReadPermission(String string_permission, int request_code) { + boolean flag = false; + if (ContextCompat.checkSelfPermission(this, string_permission) == PackageManager.PERMISSION_GRANTED) {//已有权限 + flag = true; + } else {//申请权限 + ActivityCompat.requestPermissions(this, new String[]{string_permission}, request_code); + } + return flag; + } + + private void initFontScale() { + Configuration configuration = getResources().getConfiguration(); + configuration.fontScale = (float) 1; + //0.85 小, 1 标准大小, 1.15 大,1.3 超大 ,1.45 特大 + DisplayMetrics metrics = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(metrics); + metrics.scaledDensity = configuration.fontScale * metrics.density; + getBaseContext().getResources().updateConfiguration(configuration, metrics); + } @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initStyle(); + protected void onStop() { + super.onStop(); + } + + @Override + protected void onDestroy() { + super.onDestroy(); } /** - * 初始化状态栏 + * 申请指定的权限. */ - public void initStyle() { - StatusBarUtils.setStateBaeColor(this, Color.parseColor("#131313")); - } - /** - * 字体加粗 - */ - protected void Thickening(TextView mLayTopTitle) { - TextPaint tp = mLayTopTitle.getPaint(); - tp.setFakeBoldText(true); - } + public void requestPermission(int code, String... permissions) { - - - - - - public void toast(String msg) { - Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); - } - - public void toast(@StringRes int ids) { - this.toast(getString(ids)); + ActivityCompat.requestPermissions(this, permissions, code); } /** - * 线程安全的toast - * - * @param msg + * 初始化进度对话框 */ - public void toastThreadSafe(final String msg) { - runOnUiThread(new Runnable() { - @Override - public void run() { - toast(msg); + + public void showProgressDialog(String dialogMessage,Context mContext) { + mProgressDialog = new LoadingDialog(mContext); + mProgressDialog.setCanceledOnTouchOutside(false); +// mProgressDialog.setMessage(dialogMessage); + mProgressDialog.show(); + } + + /** + * 关闭进度对话框 + */ + + public void dismissProgressDialog() { + if (null != mProgressDialog && mProgressDialog.isShowing()) { + mProgressDialog.dismiss(); + } + } + + /** + * 判断是否有指定的权限 + */ + public boolean hasPermission(String... permissions) { + + for (String permisson : permissions) { + if (ContextCompat.checkSelfPermission(this, permisson) + != PackageManager.PERMISSION_GRANTED) { + return false; } - }); - + } + return true; } + /** + * 处理整个应用用中的SDCard业务 + */ + public void doSDCardPermission() { + } + + /** + * 隐藏状态栏 + */ + public void hiddenStatusBar() { + getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, + WindowManager.LayoutParams.FLAG_FULLSCREEN); + } /** * 开启一个Activity * @@ -96,88 +170,68 @@ public class BaseActivity extends AppCompatActivity { public void startActivity(Class clz) { startActivity(new Intent(this, clz)); } - /** - * 开启一个Activity并关闭当前Activity + * 改变状态栏颜色 * - * @param clz + * @param color */ - public void startActivityAndFinishSelf(Class clz) { - startActivity(clz); - finish(); + public void changeStatusBarColor(@ColorRes int color) { + // StatusBarUtil.setStatusBarColor(this, color); } /** - * 初始化进度对话框 + * 调整状态栏为亮模式,这样状态栏的文字颜色就为深模式了。 */ - public void showProgressDialog(String dialogMessage) { - mProgressDialog = new ProgressDialog(this); - mProgressDialog.setCanceledOnTouchOutside(false); - mProgressDialog.setMessage(dialogMessage); - mProgressDialog.show(); + private void reverseStatusColor() { +// StatusBarUtil.statusBarLightMode(this); } + /** - * 关闭进度对话框 + * 弹出提示对话框 */ - public void dismissProgressDialog() { - if (null != mProgressDialog && mProgressDialog.isShowing()) { - mProgressDialog.dismiss(); + + public void alertmessage(Context context,String msg) { + + new PersonnelDialogHelptwo().showDownloadDialog(BaseActivity.this, msg,"确定", new PersonnelDialogHelptwo.ClickListener() { + @Override + public void confirm() { + + } + }); + } + public void messageDialog(String str) { + new PersonnelDialogHelptwo().showDownloadDialog(BaseActivity.this, str,"确定", new PersonnelDialogHelptwo.ClickListener() { + @Override + public void confirm() { + + } + }); + } + + public void toast(String msg) { + Toast.makeText(this, msg, Toast.LENGTH_SHORT).show(); + } + /** + * 字体加粗 + */ + protected void Thickening(TextView mLayTopTitle) { + TextPaint tp = mLayTopTitle.getPaint(); + tp.setFakeBoldText(true); + } + protected void Thickeningtwo(TextView mLayTopTitle) { + TextPaint tp = mLayTopTitle.getPaint(); + tp.setFakeBoldText(false); + } + + + public boolean ConnectNetwork(Context context,String str) { + if (!NetUtils.isConnected(context)) { + ToastUtils.showToast(context, str); + return true; } + return false; } - - /** - * 初始化刷新控件的参数 - * - * @param ids 刷新控件的id - */ - protected SwipeRefreshLayout setSwipeRefreshLayout(@IdRes int ids) { - SwipeRefreshLayout mRefreshLayout = (SwipeRefreshLayout) findViewById(ids); - mRefreshLayout.setProgressViewOffset(false, 0, - (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources().getDisplayMetrics())); - mRefreshLayout.setColorSchemeResources(R.color.colorPrimary); - return mRefreshLayout; - } - - - /** - * 显示或隐藏软键盘,如果当时是显示则隐藏,如果当前是隐藏则显示 - */ - public void showOrHide() { - InputMethodManager imm = (InputMethodManager) this.getSystemService(Context.INPUT_METHOD_SERVICE); - // 得到InputMethodManager的实例 - if (imm.isActive()) { - // 如果开启 - imm.toggleSoftInput(InputMethodManager.SHOW_IMPLICIT, - InputMethodManager.HIDE_NOT_ALWAYS); - - } - } - - - /** - * 隐藏软键盘 - */ - public void hintKb() { - InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - /**点击空白处隐藏键盘*/ - if (getCurrentFocus() != null && getCurrentFocus().getWindowToken() != null) { - imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0); - } - - } - - /** - * 显示软键盘 - * - * @param view - */ - public void showKb(View view) { - InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); - imm.showSoftInput(view, InputMethodManager.RESULT_SHOWN); - imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); - } - /** * 初始化一般返回按钮事件 */ @@ -194,13 +248,4 @@ public class BaseActivity extends AppCompatActivity { }); } } - public void messageDialog(String str) { - new PersonnelDialogHelptwo().showDownloadDialog(BaseActivity.this, str,"确定", new PersonnelDialogHelptwo.ClickListener() { - @Override - public void confirm() { - - } - }); - } - } diff --git a/app/src/main/java/com/example/administrator/seven/base/BaseRecycleAdapter.java b/app/src/main/java/com/example/administrator/seven/base/BaseRecycleAdapter.java new file mode 100644 index 0000000..38949aa --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/base/BaseRecycleAdapter.java @@ -0,0 +1,257 @@ +package com.example.administrator.seven.base; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.example.administrator.seven.R; + +import java.util.ArrayList; +import java.util.List; + +import androidx.recyclerview.widget.RecyclerView; + +import static com.example.administrator.seven.common.Constants.LIMIT; + + +/** + * BaseRecycleAdapter + * (๑• . •๑) + * 类描述:普通RecycleView的普通BaseAdapter + * 支持多类型item,支持加载更多,通过{{@link #canLoadMore}开启} + * 支持Empty布局 + * simple{@link ProjectAdapter} + * Created by LeiXiaoXing on 2017/3/17 14:26 + */ + +public abstract class BaseRecycleAdapter> extends RecyclerView.Adapter> { + + /** + * Item类型: 加载更多 + */ + private static final int ITEM_TYPE_LOAD_MORE = -1; + /** + * Item类型: Empty + */ + private static final int ITEM_TYPE_EMPTY = -2; + public List mEList; + protected Context mContext; + private OnItemClickListener mListener; + /** + * 是否支付加载更多,默认不开启 + */ + private boolean canLoadMore; + /** + * 是否加载完全部,默认可以加载更多 + */ + private boolean isLoadAll; + + /** + * 构造Adapter + * + * @param context 上下文 + * @param eList 数据集合 + * @param canLoadMore 是否支持加载更多 + */ + protected BaseRecycleAdapter(Context context, List eList, boolean canLoadMore) { + mEList = eList; + mContext = context; + this.canLoadMore = canLoadMore; + } + + public List getEList() { + return mEList; + } + + @Override + public BaseViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { + if (viewType == ITEM_TYPE_LOAD_MORE) { + //返回加载更多类型 ViewHolder + View view = LayoutInflater.from(mContext).inflate(R.layout.item_rcv_load_and_all, parent, false); + return new LoadMoreViewHolder(view); + } else if (viewType == ITEM_TYPE_EMPTY) { + //返回空布局类型 ViewHolder + View view = LayoutInflater.from(mContext).inflate(R.layout.item_rcv_empty, parent, false); + return new EmptyViewHolder(view); + } else { + View view = LayoutInflater.from(mContext).inflate(getItemLayout(viewType), parent, false); + return createViewHolder(view, viewType); + } + } + + @Override + public void onBindViewHolder(final BaseViewHolder holder, final int position) { + holder.bindView(mEList.get(position), position); + if (!canLoadMore || position <= LIMIT + || position != mEList.size() - 1 + && mEList.get(0) != null) { + //在没有开启加载更多时,开启加更多但未满一页数据时,大于一页数据但不是加载更多的item时,并且为空内容时 + //点击事件生效 + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (mListener != null) { + if (mEList.get(position) == null) { + return; + } + mListener.onItemClick(mEList.get(position),position); + } + } + }); + } + } + + @Override + public int getItemViewType(int position) { + if (canLoadMore && position > LIMIT - 1 && position == mEList.size() - 1) { + //如果开启加载更多,显示加载中 + return ITEM_TYPE_LOAD_MORE; + } else if (mEList.get(0) == null) { + //如果无内容,显示空布局 + return ITEM_TYPE_EMPTY; + } + return getCustomItemViewType(position); + } + + /** + * 创建自定义的item Type + * + * @param position item下标 + * @return 自定义item Type + */ + protected int getCustomItemViewType(int position) { + return 0; + } + + /** + * 创建ViewHolder + * + * @param view item + * @param viewType item视图类型 + * @return ViewHolder + */ + protected abstract VH createViewHolder(View view, int viewType); + + /** + * 获取子项布局文件id + * + * @return 子项布局文件id + */ + protected abstract int getItemLayout(int viewType); + + /** + * 刷新列表数据 + * + * @param entitys 新的数据集合 + */ + public void upDate(List entitys) { + this.mEList = entitys; + isLoadAll = false;//刷新列表,取消已加载完全部状态 + if (entitys != null && entitys.size() != 0) { + //有内容,移除EmptyView + mEList.remove(null); + } + notifyDataSetChanged(); + } + + /** + * 追加数据并更新 + * + * @param entitys 新的数据集合 + */ + public void upDateAdd(List entitys) { + + if (this.mEList == null) { + mEList = entitys; + } else if (entitys != null) { + if (canLoadMore) { + //k + isLoadAll = entitys.size() == 0; + if (entitys.size() != 0) { + //移除加载更多 + isLoadAll = false; + mEList.remove(null); + } + + } + mEList.addAll(entitys); + } + notifyDataSetChanged(); + } + + @Override + public int getItemCount() { + if (canLoadMore && mEList != null && mEList.size() >= LIMIT) { + //数据条数大于每页条数时显示加载更多 + //添加加载更多到尾部 + if (!mEList.contains(null)) { + mEList.add(null); + } + } else if (mEList == null || mEList.size() == 0) { + //无内容,添加EmptyView + mEList = new ArrayList<>(); + mEList.add(null); + } + return mEList.size(); + } + + public boolean isLoadAll() { + return isLoadAll; + } + + public void setOnItemClickListener(OnItemClickListener listener) { + mListener = listener; + } + + + public interface OnItemClickListener { + void onItemClick(E entity, int position); + } + + /** + * 加载更多item以及加载完全部 ViewHolder + */ + private class LoadMoreViewHolder extends BaseViewHolder { + + private View viewLoadAll; + private View viewLoading; + + LoadMoreViewHolder(View itemView) { + super(itemView); + } + + @Override + protected void initView(View itemView) { + viewLoadAll = itemView.findViewById(R.id.view_load_all); + viewLoading = itemView.findViewById(R.id.view_loading); + } + + @Override + protected void bindView(E entity, int position) { + viewLoadAll.setVisibility(isLoadAll ? View.VISIBLE : View.GONE); + viewLoading.setVisibility(isLoadAll ? View.GONE : View.VISIBLE); + } + } + + /** + * 空布局ViewHolder + */ + private class EmptyViewHolder extends BaseViewHolder { + + EmptyViewHolder(View view) { + super(view); + } + + @Override + protected void initView(View itemView) { + + } + + @Override + protected void bindView(E entity, int position) { + + } + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/base/BaseTreeActivity.java b/app/src/main/java/com/example/administrator/seven/base/BaseTreeActivity.java index 60eaa92..b2461ee 100644 --- a/app/src/main/java/com/example/administrator/seven/base/BaseTreeActivity.java +++ b/app/src/main/java/com/example/administrator/seven/base/BaseTreeActivity.java @@ -14,7 +14,6 @@ import android.widget.Toast; import com.example.administrator.seven.R; import com.example.administrator.seven.dialog.LoadingDialogy; -import com.example.administrator.seven.utils.StatusBarUtils; import com.hannesdorfmann.mosby3.mvp.MvpActivity; import com.hannesdorfmann.mosby3.mvp.MvpPresenter; import com.hannesdorfmann.mosby3.mvp.MvpView; @@ -41,7 +40,6 @@ public abstract class BaseTreeActivity extends RecyclerView.ViewHolder { + + protected BaseViewHolder(View itemView) { + super(itemView); + initView(itemView); + } + + /** + * 初始化视图 + * + * @param itemView 子视图 + */ + protected abstract void initView(View itemView); + + /** + * 绑定数据 + * + * @param entity 实体对象 + */ + protected abstract void bindView(E entity,int position); +} diff --git a/app/src/main/java/com/example/administrator/seven/base/BasetwoFragment.java b/app/src/main/java/com/example/administrator/seven/base/BasetwoFragment.java new file mode 100644 index 0000000..8b16d34 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/base/BasetwoFragment.java @@ -0,0 +1,280 @@ +package com.example.administrator.seven.base; + +import android.app.Activity; +import android.content.Context; +import android.content.Intent; +import android.content.res.Configuration; +import android.os.Bundle; +import android.util.Log; +import android.util.TypedValue; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.Toast; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.dialog.LoadingDialog; +import com.example.administrator.seven.widget.TitleBar; +import com.hannesdorfmann.mosby3.mvp.MvpFragment; +import com.hannesdorfmann.mosby3.mvp.MvpPresenter; +import com.hannesdorfmann.mosby3.mvp.MvpView; + +import androidx.annotation.IdRes; +import androidx.annotation.Nullable; +import androidx.annotation.StringRes; +import androidx.swiperefreshlayout.widget.SwipeRefreshLayout; + +/** + * BaseTreeFragment + * (๑• . •๑) + * 类描述: Fragment基类,使用第三方MVP + * Created by LeiXiaoXing on 2017/3/14 09:57 + */ + +public abstract class BasetwoFragment> extends MvpFragment { + + protected final String TAG = getClass().getSimpleName(); + protected Context mContext; + protected Activity mActivity; + private LoadingDialog mProgressDialog; + /** + * 视图是否已经初初始化 + */ + protected boolean isInit = false; + protected boolean isLoad = false; + + @Nullable + @Override + public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { + + return inflater.inflate(getFragmentLayoutId(), container, false); + } + + + @Override + public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initView(view); + initData(); + initEvent(view); + isInit = true; + isCanLoadData(); + } + + /** + * 获取Fragment布局文件id + * + * @return Fragment布局文件id + */ + protected abstract int getFragmentLayoutId(); + + /** + * 初始化视图状态 + */ + protected abstract void initView(View view); + + /** + * 初始化数据参数 + */ + protected abstract void initData(); + + /** + * 初始化操作事件 + */ + protected abstract void initEvent(View view); + + @Override + public void onAttach(Context context) { + super.onAttach(context); + mContext = context; + mActivity = getActivity(); + + } + + /** + * 视图是否已经对用户可见,系统的方法,setUserVisibleHint在onCreate之前调用 + * 1.第一次创建Fragment时,加载数据会报空指针异常,所以要加个判断是否已经初始化 + * 2.当Fragment已经初始化,再次可见时会直接调用此方法,此时可以直接加载数据 + * 所以要在两个地方调用加载数据 + */ + @Override + public void setUserVisibleHint(boolean isVisibleToUser) { + super.setUserVisibleHint(isVisibleToUser); + isCanLoadData(); + } + + /** + * 是否可以加载数据 + * 可以加载数据的条件: + * 1.视图已经初始化 + * 2.视图对用户可见 + */ + private void isCanLoadData() { + if (!isInit) { + return; + } + + if (getUserVisibleHint()) { + setUpView(); + isLoad = true; + } else { + if (isLoad) { + stopLoad(); + } + } + } + + /** + * 当视图初始化并且对用户可见的时候去真正的加载数据 + */ + protected void setUpView() { + } + + /** + * 当视图已经对用户不可见并且加载过数据,如果需要在切换到其他页面时停止加载数据,可以调用此方法 + */ + protected void stopLoad() { + } + + /** + * toast + * + * @param msg 吐丝的内容 + */ + public void toast(String msg) { + Toast.makeText(mContext, msg, Toast.LENGTH_SHORT).show(); + } + + /** + * toast + * + * @param ids 吐丝的内容的字符串ids + */ + public void toast(@StringRes int ids) { + toast(getString(ids)); + } + + + /** + * 线程安全的toast + * + * @param msg + */ + public void toastThreadSafe(final String msg) { + if (null != mActivity) { + mActivity.runOnUiThread(new Runnable() { + @Override + public void run() { + toast(msg); + } + }); + } + } + + /** + * 线程安全的toast + * + * @param ids + */ + public void toastThreadSafe(@StringRes final int ids) { + if (null != mActivity) { + mActivity.runOnUiThread(new Runnable() { + @Override + public void run() { + toast(ids); + } + }); + } + } + + /** + * 开启一个Activity + * + * @param clz 需要开启的Activity + */ + public void startActivity(Class clz) { + if (null != mContext) { + startActivity(new Intent(mContext, clz)); +// getActivity().overridePendingTransition(R.anim.trans_next_in,R.anim.trans_next_out); + } + } + + /** + * 开启一个Activity,并finish掉当前的Activity + * + * @param clz + */ + public void startActivityAndFinishSelf(Class clz) { + if (null != mActivity) { + startActivity(clz); + mActivity.finish(); + } + + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + } + + /** + * 初始化进度对话框 + */ + + public void showProgressDialog(String dialogMessage) { + mProgressDialog = new LoadingDialog(mContext); + mProgressDialog.setCanceledOnTouchOutside(false); +// mProgressDialog.setMessage(dialogMessage); + mProgressDialog.show(); + } + + + @Override + public void onHiddenChanged(boolean hidden) { + super.onHiddenChanged(hidden); + Log.d(TAG, "onHiddenChanged"); + } + + /** + * 关闭进度对话框 + */ + + public void dismissProgressDialog() { + if (null != mProgressDialog && mProgressDialog.isShowing()) { + mProgressDialog.dismiss(); + } + } + + /** + * 初始化刷新控件的参数 + * + * @param ids 刷新控件的id + */ + protected SwipeRefreshLayout setSwipeRefreshLayout(@IdRes int ids) { + SwipeRefreshLayout mRefreshLayout = (SwipeRefreshLayout) getView().findViewById(ids); + mRefreshLayout.setProgressViewOffset(false, 0, + (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources().getDisplayMetrics())); + mRefreshLayout.setColorSchemeResources(R.color.colorPrimary); + return mRefreshLayout; + } + + /** + * 设置标题栏参数 + * + * @param titleIds 标题栏的id + * @param title 标题 + * @param goneLeftBtn 左边按钮是否显示 + * @param goneRightBtn 右边按钮是否显示 + * @param titleBarClickListener 左右边的按钮点击事件回调接口 + * @return 返回设置好的titlebar + */ + public TitleBar setTitleBar(@IdRes int titleIds, String title + , boolean goneLeftBtn, boolean goneRightBtn, TitleBar.OnTitleBarClickListener titleBarClickListener) { + TitleBar titleBar = (TitleBar) getView().findViewById(titleIds); + titleBar.setTitle(title); + titleBar.visibleIvLeftBtn(goneLeftBtn); + titleBar.visibleIvRightBtn(goneRightBtn); + titleBar.setOnTitleBarClickListener(titleBarClickListener); + return titleBar; + } +} diff --git a/app/src/main/java/com/example/administrator/seven/common/Constants.java b/app/src/main/java/com/example/administrator/seven/common/Constants.java new file mode 100644 index 0000000..b235710 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/common/Constants.java @@ -0,0 +1,88 @@ +package com.example.administrator.seven.common; + +/** + * Created by Administrator on 2016/1/10. + * 作者:xudiwei + *

+ * 描述:常量类 + */ + +public class Constants { + /** + * 模拟网络请求成功 + */ + public static final int SUCCESS = 1; + /** + * 模拟网络请求失败 + */ + public static final int FAILE = 0; + + /** + * 模拟数据网络耗时 + */ + public static final int LOADING_TIME = 1500; + + /** + * 模拟数据每页长度 + */ + public static final int LIMIT = 20; + + /** + * 讯飞语音appid + */ + public static final String IFLYTEK_APPID = "58a176c2"; + /** + * 当前App创建在Sd卡里的根目录,其它的目录都要创建在App_root_dir里面。 + */ + public static final String APP_ROOT_DIR = "LifeTree"; + /** + * 存图片的dir + */ + public static final String IMG_DIR = APP_ROOT_DIR + "/img"; + /** + * 图片预览里保存图片的目录 + */ + public static final String SAVE_IMG_DIR = APP_ROOT_DIR + "/save"; + /** + * apk下载存放目录 + */ + public static final String APK_DIR = APP_ROOT_DIR + "/apk"; + /** + * 缓存目录 + */ + public static final String CACHE_DIR = APP_ROOT_DIR + "/cache"; + /** + * SharedPreferences 文件名 + */ + public static final String SP_CONFIG_FILE_NAME = "config"; + private static final String TAG = "Constants"; + /** + * 当前用户的user_id(token) + */ + private static String userId = ""; + /** + * 当前用户的角色 1=普通用户 2=老师 3=义工 + */ + // private static int role = -1; + /** + * 当前用户所在的班级 + */ + private static String classId = ""; + /** + * 当前用户的IMidentify + */ + private static String identify = ""; + + + /** + * 消息内存中的用户相关的信息。 + */ + public static void clearAccountInfo() { + userId = ""; + //role = -1; + classId = ""; + identify = ""; + } + + +} diff --git a/app/src/main/java/com/example/administrator/seven/main/activity/MainActivity.java b/app/src/main/java/com/example/administrator/seven/main/activity/MainActivity.java index 86d09d7..e64b3a8 100644 --- a/app/src/main/java/com/example/administrator/seven/main/activity/MainActivity.java +++ b/app/src/main/java/com/example/administrator/seven/main/activity/MainActivity.java @@ -7,10 +7,11 @@ import android.widget.TextView; import com.example.administrator.seven.R; import com.example.administrator.seven.base.BaseActivity; +import com.example.administrator.seven.main.find.FindFragment; import com.example.administrator.seven.main.kehu.TraceFragment; import com.example.administrator.seven.main.my.MyFragment; import com.example.administrator.seven.main.task.HomeFragment; -import com.example.administrator.seven.main.zhibo.SendFragment; +import com.example.administrator.seven.main.zhibo.LivebroFragment; import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentManager; @@ -23,6 +24,7 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ */ private TextView mTvHome; private TextView mTvHomeImg; + private RelativeLayout mRlHome; /** * 地图 @@ -30,6 +32,10 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ private TextView mTvMap; private RelativeLayout mRlMap; private TextView mTvMapImg; + /** + * 发现 + */ + private TextView img_toggle_cms; /** * 配送 */ @@ -46,10 +52,13 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ private FragmentManager fm; private HomeFragment mHomeFragment; - private SendFragment mSendFragment; + private LivebroFragment mSendFragment; private TraceFragment traceFragment; + private FindFragment mapFragment; private MyFragment mMineFragment; private Fragment mCurrent; + private RelativeLayout rl_faxian; + private TextView tv_find; @Override protected void onCreate(Bundle savedInstanceState) { @@ -62,8 +71,14 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ private void initView() { mTvHomeImg = (TextView) findViewById(R.id.tv_home_img); mTvHome = (TextView) findViewById(R.id.tv_home); + + mRlHome = (RelativeLayout) findViewById(R.id.rl_home); mRlHome.setOnClickListener(this); + rl_faxian = (RelativeLayout) findViewById(R.id.rl_faxian); + rl_faxian.setOnClickListener(this); + tv_find = (TextView) findViewById(R.id.tv_find); + mTvMapImg = (TextView) findViewById(R.id.tv_map_img); mTvMap = (TextView) findViewById(R.id.tv_map); mRlMap = (RelativeLayout) findViewById(R.id.rl_map); @@ -102,12 +117,14 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ mTvHome.setTextColor(getResources().getColor(R.color.colortheme)); mTvSend.setTextColor(getResources().getColor(R.color.colorhui)); + tv_find.setTextColor(getResources().getColor(R.color.colorhui)); mTvMap.setTextColor(getResources().getColor(R.color.colorhui)); mTvMy.setTextColor(getResources().getColor(R.color.colorhui)); hideFragment(mSendFragment, fragmentTransaction); hideFragment(traceFragment, fragmentTransaction); + hideFragment(mapFragment, fragmentTransaction); hideFragment(mMineFragment, fragmentTransaction); if (mHomeFragment == null) { fragmentTransaction.add(R.id.content_layout, mHomeFragment); @@ -124,21 +141,48 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ mTvHome.setTextColor(getResources().getColor(R.color.colorhui)); mTvSend.setTextColor(getResources().getColor(R.color.colortheme)); + tv_find.setTextColor(getResources().getColor(R.color.colorhui)); mTvMap.setTextColor(getResources().getColor(R.color.colorhui)); mTvMy.setTextColor(getResources().getColor(R.color.colorhui)); hideFragment(mHomeFragment, fragmentTransaction); hideFragment(traceFragment, fragmentTransaction); + hideFragment(mapFragment, fragmentTransaction); hideFragment(mMineFragment, fragmentTransaction); if (mSendFragment == null) { - mSendFragment = new SendFragment(); + mSendFragment = new LivebroFragment(); fragmentTransaction.add(R.id.content_layout, mSendFragment); } else { mCurrent = mSendFragment; fragmentTransaction.show(mSendFragment); } break; + case R.id.rl_faxian: + mTvHomeImg.setBackgroundResource(R.mipmap.icon_task_hui); + mTvSendImg.setBackgroundResource(R.mipmap.icon_zhibohui); + mTvMapImg.setBackgroundResource(R.mipmap.icon_kehuhui); + mTvMineImg.setBackgroundResource(R.mipmap.icon_wodehui); + + mTvHome.setTextColor(getResources().getColor(R.color.colorhui)); + mTvSend.setTextColor(getResources().getColor(R.color.colorhui)); + tv_find.setTextColor(getResources().getColor(R.color.colortheme)); + mTvMap.setTextColor(getResources().getColor(R.color.colorhui)); + mTvMy.setTextColor(getResources().getColor(R.color.colorhui)); + + + hideFragment(mHomeFragment, fragmentTransaction); + hideFragment(mSendFragment, fragmentTransaction); + hideFragment(traceFragment, fragmentTransaction); + hideFragment(mMineFragment, fragmentTransaction); + if (mapFragment == null) { + mapFragment = new FindFragment(); + fragmentTransaction.add(R.id.content_layout, mapFragment); + } else { + mCurrent = mapFragment; + fragmentTransaction.show(mapFragment); + } + break; case R.id.rl_map: mTvHomeImg.setBackgroundResource(R.mipmap.icon_task_hui); mTvSendImg.setBackgroundResource(R.mipmap.icon_zhibohui); @@ -147,12 +191,14 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ mTvHome.setTextColor(getResources().getColor(R.color.colorhui)); mTvSend.setTextColor(getResources().getColor(R.color.colorhui)); + tv_find.setTextColor(getResources().getColor(R.color.colorhui)); mTvMap.setTextColor(getResources().getColor(R.color.colortheme)); mTvMy.setTextColor(getResources().getColor(R.color.colorhui)); hideFragment(mHomeFragment, fragmentTransaction); hideFragment(mSendFragment, fragmentTransaction); + hideFragment(mapFragment, fragmentTransaction); hideFragment(mMineFragment, fragmentTransaction); if (traceFragment == null) { traceFragment = new TraceFragment(); @@ -170,12 +216,14 @@ public class MainActivity extends BaseActivity implements View.OnClickListener{ mTvHome.setTextColor(getResources().getColor(R.color.colorhui)); mTvSend.setTextColor(getResources().getColor(R.color.colorhui)); + tv_find.setTextColor(getResources().getColor(R.color.colorhui)); mTvMap.setTextColor(getResources().getColor(R.color.colorhui)); mTvMy.setTextColor(getResources().getColor(R.color.colortheme)); hideFragment(mHomeFragment, fragmentTransaction); hideFragment(mSendFragment, fragmentTransaction); + hideFragment(mapFragment, fragmentTransaction); hideFragment(traceFragment, fragmentTransaction); if (mMineFragment == null) { mMineFragment = new MyFragment(); diff --git a/app/src/main/java/com/example/administrator/seven/main/find/CloundSolutionActivity.java b/app/src/main/java/com/example/administrator/seven/main/find/CloundSolutionActivity.java new file mode 100644 index 0000000..e927e41 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/CloundSolutionActivity.java @@ -0,0 +1,220 @@ +package com.example.administrator.seven.main.find; + +import android.os.Bundle; +import android.os.Handler; +import android.util.Log; +import android.view.View; +import android.widget.ImageView; +import android.widget.TextView; +import android.widget.Toast; + +import com.amap.api.location.AMapLocation; +import com.amap.api.location.AMapLocationClient; +import com.amap.api.location.AMapLocationClientOption; +import com.amap.api.location.AMapLocationListener; +import com.example.administrator.seven.R; +import com.example.administrator.seven.base.BaseActivity; +import com.zaaach.citypicker.CityPicker; +import com.zaaach.citypicker.adapter.OnPickListener; +import com.zaaach.citypicker.model.City; +import com.zaaach.citypicker.model.HotCity; +import com.zaaach.citypicker.model.LocateState; +import com.zaaach.citypicker.model.LocatedCity; + +import java.text.SimpleDateFormat; +import java.util.ArrayList; +import java.util.Date; +import java.util.List; + +public class CloundSolutionActivity extends BaseActivity implements View.OnClickListener, AMapLocationListener { + + private List hotCities; + private int anim; + private boolean enable; + + + private TextView titleTv; + private ImageView backIv; + + /** + * 西安 + */ + private TextView mChengshi; + + //声明AMapLocationClient类对象,定位发起端 + private AMapLocationClient mLocationClient = null; + //声明mLocationOption对象,定位参数 + public AMapLocationClientOption mLocationOption = null; + //标识,用于判断是否只显示一次定位信息和用户重新定位 + private boolean isFirstLoc = true; + private String city; + private String province; + private String cityCode; + private String adCode; + private View view; + + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_clound_solution); + initView(); +// HotCity(); + //开始定位 +// location(); + } + + private void HotCity() { + hotCities = new ArrayList<>(); + hotCities.add(new HotCity("北京", "北京", "101010100")); + hotCities.add(new HotCity("上海", "上海", "101020100")); + hotCities.add(new HotCity("广州", "广东", "101280101")); + hotCities.add(new HotCity("深圳", "广东", "101280601")); + hotCities.add(new HotCity("杭州", "浙江", "101210101")); + } + + private void initView() { + mChengshi = (TextView) findViewById(R.id.chengshi); + mChengshi.setOnClickListener(this); + view = (View) findViewById(R.id.view); + + } + + @Override + public void onClick(View view) { + switch (view.getId()) { + case R.id.leftIv: + finish(); + break; + case R.id.chengshi: + CityPicker.from(CloundSolutionActivity.this) + .enableAnimation(enable) + .setAnimationStyle(anim) + .setLocatedCity(null) + .setHotCities(hotCities) + .setOnPickListener(new OnPickListener() { + @Override + public void onPick(int position, City data) { + // mDangqianchengshi.setText(String.format("当前城市:%s,%s", data.getName(), data.getCode())); + mChengshi.setText(String.format(data.getName())); + Toast.makeText( + getApplicationContext(), + String.format("点击的数据:%s,%s", data.getName(), data.getCode()), + Toast.LENGTH_SHORT) + .show(); + } + + @Override + public void onCancel() { + Toast.makeText(getApplicationContext(), "取消选择", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onLocate() { + //开始定位,这里模拟一下定位 + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + CityPicker.from(CloundSolutionActivity.this).locateComplete(new LocatedCity(city, province, adCode), LocateState.SUCCESS); + } + }, 3000); + + + } + }) + .show(); + break; + + + } + } + + private void location() { + //初始化定位 + mLocationClient = new AMapLocationClient(getApplicationContext()); + //设置定位回调监听 + mLocationClient.setLocationListener(this); + //初始化定位参数 + mLocationOption = new AMapLocationClientOption(); + //设置定位模式为Hight_Accuracy高精度模式,Battery_Saving为低功耗模式,Device_Sensors是仅设备模式 + mLocationOption.setLocationMode(AMapLocationClientOption.AMapLocationMode.Hight_Accuracy); + //设置是否返回地址信息(默认返回地址信息) + mLocationOption.setNeedAddress(true); + //设置是否只定位一次,默认为false + mLocationOption.setOnceLocation(false); + //设置是否强制刷新WIFI,默认为强制刷新 + mLocationOption.setWifiActiveScan(true); + //设置是否允许模拟位置,默认为false,不允许模拟位置 + mLocationOption.setMockEnable(false); + //设置定位间隔,单位毫秒,默认为2000ms + mLocationOption.setInterval(2000); + //给定位客户端对象设置定位参数 + mLocationClient.setLocationOption(mLocationOption); + //启动定位 + mLocationClient.startLocation(); + } + + @Override + public void onLocationChanged(AMapLocation aMapLocation) { + if (aMapLocation != null) { + if (aMapLocation.getErrorCode() == 0) { + //定位成功回调信息,设置相关消息 + aMapLocation.getLocationType();//获取当前定位结果来源,如网络定位结果,详见官方定位类型表 + aMapLocation.getLatitude();//获取纬度 + aMapLocation.getLongitude();//获取经度 + aMapLocation.getAccuracy();//获取精度信息 + SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + Date date = new Date(aMapLocation.getTime()); + df.format(date);//定位时间 + aMapLocation.getAddress();//地址,如果option中设置isNeedAddress为false,则没有此结果,网络定位结果中会有地址信息,GPS定位不返回地址信息。 + aMapLocation.getCountry();//国家信息 + aMapLocation.getProvince();//省信息 + aMapLocation.getCity();//城市信息 + aMapLocation.getDistrict();//城区信息 + aMapLocation.getStreet();//街道信息 + aMapLocation.getStreetNum();//街道门牌号信息 + aMapLocation.getCityCode();//城市编码 + aMapLocation.getAdCode();//地区编码 + + // 如果不设置标志位,此时再拖动地图时,它会不断将地图移动到当前的位置 + if (isFirstLoc) { + //获取定位信息 + StringBuffer buffer = new StringBuffer(); + buffer.append(aMapLocation.getCountry() + "" + + aMapLocation.getProvince() + "" + + aMapLocation.getCity() + "" + + aMapLocation.getProvince() + "" + + aMapLocation.getDistrict() + "" + + aMapLocation.getStreet() + "" + + aMapLocation.getStreetNum()); + Toast.makeText(getApplicationContext(), buffer.toString(), Toast.LENGTH_LONG).show(); + + city = aMapLocation.getCity(); + mChengshi.setText(city); + province = aMapLocation.getProvince(); + cityCode = aMapLocation.getCityCode(); + adCode = aMapLocation.getAdCode(); + isFirstLoc = false; + mLocationClient.stopLocation(); + } + + + } else { + //显示错误信息ErrCode是错误码,errInfo是错误信息,详见错误码表。 + Log.e("AmapError", "location Error, ErrCode:" + + aMapLocation.getErrorCode() + ", errInfo:" + + aMapLocation.getErrorInfo()); + Toast.makeText(getApplicationContext(), "定位失败", Toast.LENGTH_LONG).show(); + } + } + } + + + + @Override + protected void onDestroy() { + super.onDestroy(); + + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/CommentActivity.java b/app/src/main/java/com/example/administrator/seven/main/find/CommentActivity.java new file mode 100644 index 0000000..2e44956 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/CommentActivity.java @@ -0,0 +1,27 @@ +package com.example.administrator.seven.main.find; + +import android.os.Bundle; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.base.BaseActivity; +import com.example.administrator.seven.main.find.ui.CommentFragment; +import com.example.administrator.seven.widget.TitleBar; + +/** + * 评论 + */ +public class CommentActivity extends BaseActivity { + + private TitleBar mTitleBar; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_comment); + mTitleBar = findViewById(R.id.title_bar); + initNormalBack(); + String num = getIntent().getStringExtra("num"); + mTitleBar.setTitle("新评论"+"("+num+")"); + getSupportFragmentManager().beginTransaction().replace(R.id.container,new CommentFragment()).commit(); + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/ConversationActivity.java b/app/src/main/java/com/example/administrator/seven/main/find/ConversationActivity.java new file mode 100644 index 0000000..ddf2408 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/ConversationActivity.java @@ -0,0 +1,26 @@ +package com.example.administrator.seven.main.find; + +import android.os.Bundle; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.base.BaseActivity; +import com.example.administrator.seven.main.find.ui.CommentFragment; +import com.example.administrator.seven.widget.TitleBar; + +/** + * 会话 + */ +public class ConversationActivity extends BaseActivity { + private TitleBar mTitleBar; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_conversation); + mTitleBar = findViewById(R.id.title_bar); + initNormalBack(); + String num = getIntent().getStringExtra("num"); + mTitleBar.setTitle("抖音昵称"+"**"); + getSupportFragmentManager().beginTransaction().replace(R.id.container,new QuestionsFragment()).commit(); + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/FindFragment.java b/app/src/main/java/com/example/administrator/seven/main/find/FindFragment.java new file mode 100644 index 0000000..8802f6a --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/FindFragment.java @@ -0,0 +1,119 @@ +package com.example.administrator.seven.main.find; + +import android.content.Context; +import android.os.Bundle; +import android.os.Handler; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.main.find.ui.FindFragmenttwo; +import com.example.administrator.seven.main.kehu.activity.ShowAty; +import com.example.administrator.seven.test.BaseFragment; +import com.zaaach.citypicker.CityPicker; +import com.zaaach.citypicker.adapter.OnPickListener; +import com.zaaach.citypicker.model.City; +import com.zaaach.citypicker.model.HotCity; +import com.zaaach.citypicker.model.LocateState; +import com.zaaach.citypicker.model.LocatedCity; + +import java.util.ArrayList; +import java.util.List; + +/** + * 发现 + */ +public class FindFragment extends BaseFragment { + private int anim; + private boolean enable; + private List hotCities; + private String city; + private String province; + private String adCode; + Context mContext; + View view; + private RelativeLayout rl_privateletter; + private String pagetype="0";//0是家居 1是私信 + private RelativeLayout dianpubuju; + private LinearLayout dianyuanbuju; + private TextView marking_fragment; + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mContext = getActivity(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + if (view != null) { + ViewGroup parent = (ViewGroup) view.getParent(); + if (parent != null) { + parent.removeView(view); + } + return view; + } + view = inflater.inflate(R.layout.criclefragment, container, false); + getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.container,new FindFragmenttwo()).commit(); + initView(view); + HotCity(); + return view; + } + private void HotCity() { + hotCities = new ArrayList<>(); + hotCities.add(new HotCity("北京", "北京", "101010100")); + hotCities.add(new HotCity("上海", "上海", "101020100")); + hotCities.add(new HotCity("广州", "广东", "101280101")); + hotCities.add(new HotCity("深圳", "广东", "101280601")); + hotCities.add(new HotCity("杭州", "浙江", "101210101")); + } + + private void initView(View mContentView) { + marking_fragment = (TextView)view.findViewById(R.id.marking_fragment); + dianpubuju = (RelativeLayout)view.findViewById(R.id.dianpubuju); + dianyuanbuju = (LinearLayout)view.findViewById(R.id.dianyuanbuju); + rl_privateletter = (RelativeLayout)view.findViewById(R.id.rl_privateletter); + rl_privateletter.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + if(pagetype.equals("0")){ + pagetype="1"; + dianpubuju.setVisibility(View.GONE); + dianyuanbuju.setVisibility(View.VISIBLE); + + }else { + pagetype="0"; + dianpubuju.setVisibility(View.VISIBLE); + dianyuanbuju.setVisibility(View.GONE); + } + } + }); + + PriLetFragment priLetFragment = (PriLetFragment) getChildFragmentManager().findFragmentById(R.id.news_title_fragment); + priLetFragment.cutover(new PriLetFragment.ClickCallback() { + @Override + public void onsuccess() { + pagetype="0"; + dianpubuju.setVisibility(View.VISIBLE); + dianyuanbuju.setVisibility(View.GONE); + } + }); + + + marking_fragment.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + // ShowAty.CloundSolutionActivity(getActivity()); + ShowAty.MainActivitytwot(getActivity()); + + + } + }); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/find/MainActivitytwot.java b/app/src/main/java/com/example/administrator/seven/main/find/MainActivitytwot.java new file mode 100644 index 0000000..4fc4104 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/MainActivitytwot.java @@ -0,0 +1,143 @@ +package com.example.administrator.seven.main.find; + +import android.os.Bundle; +import android.os.Handler; +import android.view.View; +import android.widget.Button; +import android.widget.CheckBox; +import android.widget.CompoundButton; +import android.widget.TextView; +import android.widget.Toast; + +import com.example.administrator.seven.R; +import com.zaaach.citypicker.CityPicker; +import com.zaaach.citypicker.adapter.OnPickListener; +import com.zaaach.citypicker.model.City; +import com.zaaach.citypicker.model.HotCity; +import com.zaaach.citypicker.model.LocateState; +import com.zaaach.citypicker.model.LocatedCity; + +import java.util.ArrayList; +import java.util.List; + +import androidx.appcompat.app.AppCompatActivity; + +public class MainActivitytwot extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener { + private TextView currentTV; + private CheckBox hotCB; + private CheckBox animCB; + private CheckBox enableCB; + private Button themeBtn; + + private static final String KEY = "current_theme"; + + private List hotCities; + private int anim; + private int theme; + private boolean enable; + + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + + if (savedInstanceState != null) { + theme = savedInstanceState.getInt(KEY); + setTheme(theme > 0 ? theme : R.style.DefaultCityPickerTheme); + } + + setContentView(R.layout.activity_mainsss); + + currentTV = findViewById(R.id.tv_current); + hotCB = findViewById(R.id.cb_hot); + animCB = findViewById(R.id.cb_anim); + enableCB = findViewById(R.id.cb_enable_anim); + themeBtn = findViewById(R.id.btn_style); + + if (theme == R.style.DefaultCityPickerTheme){ + themeBtn.setText("默认主题"); + } + hotCB.setOnCheckedChangeListener(this); + animCB.setOnCheckedChangeListener(this); + enableCB.setOnCheckedChangeListener(this); + + themeBtn.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (themeBtn.getText().toString().startsWith("自定义")){ + themeBtn.setText("默认主题"); + theme = R.style.DefaultCityPickerTheme; + } + recreate(); + } + }); + + findViewById(R.id.btn_pick).setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + CityPicker.from(MainActivitytwot.this) + .enableAnimation(enable) + .setAnimationStyle(anim) + .setLocatedCity(null) + .setHotCities(hotCities) + .setOnPickListener(new OnPickListener() { + @Override + public void onPick(int position, City data) { + currentTV.setText(String.format("当前城市:%s,%s", data.getName(), data.getCode())); + Toast.makeText( + getApplicationContext(), + String.format("点击的数据:%s,%s", data.getName(), data.getCode()), + Toast.LENGTH_SHORT) + .show(); + } + + @Override + public void onCancel() { + Toast.makeText(getApplicationContext(), "取消选择", Toast.LENGTH_SHORT).show(); + } + + @Override + public void onLocate() { + //开始定位,这里模拟一下定位 + new Handler().postDelayed(new Runnable() { + @Override + public void run() { + CityPicker.from(MainActivitytwot.this).locateComplete(new LocatedCity("深圳", "广东", "101280601"), LocateState.SUCCESS); + } + }, 3000); + } + }) + .show(); + } + }); + } + + @Override + public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { + switch (buttonView.getId()){ + case R.id.cb_hot: + if (isChecked){ + hotCities = new ArrayList<>(); + hotCities.add(new HotCity("北京", "北京", "101010100")); + hotCities.add(new HotCity("上海", "上海", "101020100")); + hotCities.add(new HotCity("广州", "广东", "101280101")); + hotCities.add(new HotCity("深圳", "广东", "101280601")); + hotCities.add(new HotCity("杭州", "浙江", "101210101")); + }else { + hotCities = null; + } + break; + case R.id.cb_anim: + + break; + case R.id.cb_enable_anim: + enable = isChecked; + break; + } + } + + @Override + protected void onSaveInstanceState(Bundle outState) { + super.onSaveInstanceState(outState); + outState.putInt(KEY, theme); + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/MapFragment.java b/app/src/main/java/com/example/administrator/seven/main/find/MapFragment.java deleted file mode 100644 index d26f555..0000000 --- a/app/src/main/java/com/example/administrator/seven/main/find/MapFragment.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.example.administrator.seven.main.find; - -import com.example.administrator.seven.base.BaseFragment; - -public class MapFragment extends BaseFragment { -} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/OnSatisfactionListener.java b/app/src/main/java/com/example/administrator/seven/main/find/OnSatisfactionListener.java new file mode 100644 index 0000000..1982e93 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/OnSatisfactionListener.java @@ -0,0 +1,9 @@ +package com.example.administrator.seven.main.find; + +/** + * Created by ${hu} on 2017/5/27. + */ + +public interface OnSatisfactionListener { + void onClick(); +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/PriLetFragment.java b/app/src/main/java/com/example/administrator/seven/main/find/PriLetFragment.java new file mode 100644 index 0000000..2185ef9 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/PriLetFragment.java @@ -0,0 +1,63 @@ +package com.example.administrator.seven.main.find; + +import android.content.Context; +import android.os.Bundle; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.RelativeLayout; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.main.find.ui.PrivateletterFragment; +import com.example.administrator.seven.test.BaseFragment; + +/** + * 私信 + */ +public class PriLetFragment extends BaseFragment { + + Context mContext; + View view; + private RelativeLayout rl_live; + + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + mContext = getActivity(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + if (view != null) { + ViewGroup parent = (ViewGroup) view.getParent(); + if (parent != null) { + parent.removeView(view); + } + return view; + } + view = inflater.inflate(R.layout.findfragment, container, false); + getActivity().getSupportFragmentManager().beginTransaction().replace(R.id.containerr,new PrivateletterFragment()).commit(); + initView(view); + return view; + } + + private void initView(View mContentView) { + rl_live = (RelativeLayout)view.findViewById(R.id.rl_live); + + } + + interface ClickCallback { + void onsuccess(); + } + + public void cutover(final ClickCallback callback) { + rl_live.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + callback.onsuccess(); + } + }); + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/find/QuestionsFragment.java b/app/src/main/java/com/example/administrator/seven/main/find/QuestionsFragment.java new file mode 100644 index 0000000..dda62d3 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/QuestionsFragment.java @@ -0,0 +1,120 @@ +package com.example.administrator.seven.main.find; + + +import android.text.Editable; +import android.text.TextUtils; +import android.text.TextWatcher; +import android.view.View; +import android.view.WindowManager; +import android.widget.Button; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.base.BaseTreeFragment; +import com.example.administrator.seven.main.find.adapter.QuestionsAdapter; +import com.example.administrator.seven.main.find.entity.QuestionsEntity; +import com.example.administrator.seven.main.find.mvp.contract.QuestionsContract; +import com.example.administrator.seven.main.find.mvp.presenter.QuestionsPresenterImpl; +import com.example.administrator.seven.widget.PastEditText; + +import java.util.ArrayList; +import java.util.List; + +import androidx.recyclerview.widget.LinearLayoutManager; +import androidx.recyclerview.widget.RecyclerView; +import io.reactivex.annotations.NonNull; + +/** + * 日期:2017.01.03 + *

+ * 作者: + *

+ * 描述:答疑Fragment + */ +public class QuestionsFragment extends BaseTreeFragment implements QuestionsContract.View { + + + private Button btnSend; + private PastEditText pastEditText; + private RecyclerView mRecyclerView; + private QuestionsAdapter mAdapter; + private LinearLayoutManager mLayoutManager; + + @Override + protected int getFragmentLayoutId() { + return R.layout.fragment_questions; + + } + + @Override + protected void initView(View view) { + btnSend = (Button) view.findViewById(R.id.btn_send); + pastEditText = (PastEditText) view.findViewById(R.id.et_msg); + mRecyclerView = (RecyclerView) view.findViewById(R.id.rcv); + mLayoutManager = new LinearLayoutManager(mContext); + mRecyclerView.setLayoutManager(mLayoutManager); + mAdapter = new QuestionsAdapter(mContext, null, false); + mRecyclerView.setAdapter(mAdapter); + } + + @Override + protected void initData() { + getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); + + //初始化 + List question = new ArrayList<>(); + QuestionsEntity questionsEntity = new QuestionsEntity(); + questionsEntity.setIs_self(0);//表明是自己发送的 + questionsEntity.setMsg("您好,很高兴为您服务。");//设置问题内容 + question.add(questionsEntity); + mAdapter.upDate(question); + } + + + @Override + protected void initEvent(View view) { + pastEditText.addTextChangedListener(new TextWatcher() { + @Override + public void beforeTextChanged(CharSequence s, int start, int count, int after) { + + } + + @Override + public void onTextChanged(CharSequence s, int start, int before, int count) { + btnSend.setEnabled(!TextUtils.isEmpty(s)); + } + + @Override + public void afterTextChanged(Editable s) { + + } + }); + btnSend.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + //发送消息 + getPresenter().sendMsg(); + } + }); + + } + + @NonNull + @Override + public QuestionsPresenterImpl createPresenter() { + return new QuestionsPresenterImpl(); + } + + @Override + public String getInput() { + String msg = pastEditText.getText().toString(); + pastEditText.setText(""); + return msg; + } + + @Override + public void upDataAdd(List list) { + mAdapter.upDateAdd(list); + mLayoutManager.scrollToPosition(mAdapter.getEList().size() - 1); + } + +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/adapter/FindListAdapter.java b/app/src/main/java/com/example/administrator/seven/main/find/adapter/FindListAdapter.java new file mode 100644 index 0000000..e1a44e3 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/adapter/FindListAdapter.java @@ -0,0 +1,61 @@ +package com.example.administrator.seven.main.find.adapter; + +import android.content.Context; +import android.view.View; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.example.administrator.seven.R; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; +import com.example.administrator.seven.utils.WidgetTools; + +import java.util.List; + + +public class FindListAdapter extends BaseQuickAdapter { + Context mcontext; + OnViewClickListener onViewClickListener; + + public FindListAdapter(Context context, List list) { + super(R.layout.cuslist_item, list); + this.mcontext = context; + } + + @Override + protected void convert(final BaseViewHolder helper, final CustomerListBean.ResultBean.DataBean item) { + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_name), "", item.getName()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_phone), "", item.getPhone()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_watch), "", item.getWechat()); + TextView tv_cuslist_caozuo = (TextView)helper.getView(R.id.tv_cuslist_caozuo); + tv_cuslist_caozuo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onViewClickListener.operation(item); + } + }); + RelativeLayout yichengjhiao_rv = (RelativeLayout)helper.getView(R.id.yichengjhiao_rv); + yichengjhiao_rv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onViewClickListener.enterCusDetail(item); + } + }); + + } + + public void operationListenner(OnViewClickListener onViewClickListener){ + this.onViewClickListener = onViewClickListener; + } + + public interface OnViewClickListener{ + + void operation(CustomerListBean.ResultBean.DataBean item); + + + void enterCusDetail(CustomerListBean.ResultBean.DataBean item); + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/find/adapter/PrivateletAdapter.java b/app/src/main/java/com/example/administrator/seven/main/find/adapter/PrivateletAdapter.java new file mode 100644 index 0000000..de8fdc5 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/adapter/PrivateletAdapter.java @@ -0,0 +1,61 @@ +package com.example.administrator.seven.main.find.adapter; + +import android.content.Context; +import android.view.View; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.chad.library.adapter.base.BaseQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.example.administrator.seven.R; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; +import com.example.administrator.seven.utils.WidgetTools; + +import java.util.List; + + +public class PrivateletAdapter extends BaseQuickAdapter { + Context mcontext; + OnViewClickListener onViewClickListener; + + public PrivateletAdapter(Context context, List list) { + super(R.layout.private_let_item, list); + this.mcontext = context; + } + + @Override + protected void convert(final BaseViewHolder helper, final CustomerListBean.ResultBean.DataBean item) { + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_name), "", item.getName()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_phone), "", item.getPhone()); + WidgetTools.setTextfive((TextView) helper.getView(R.id.tv_dea_watch), "", item.getWechat()); + TextView tv_cuslist_caozuo = (TextView)helper.getView(R.id.tv_cuslist_caozuo); + tv_cuslist_caozuo.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onViewClickListener.operation(item); + } + }); + RelativeLayout yichengjhiao_rv = (RelativeLayout)helper.getView(R.id.yichengjhiao_rv); + yichengjhiao_rv.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View view) { + onViewClickListener.enterCusDetail(item); + } + }); + + } + + public void operationListenner(OnViewClickListener onViewClickListener){ + this.onViewClickListener = onViewClickListener; + } + + public interface OnViewClickListener{ + + void operation(CustomerListBean.ResultBean.DataBean item); + + + void enterCusDetail(CustomerListBean.ResultBean.DataBean item); + + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/find/adapter/QuestionsAdapter.java b/app/src/main/java/com/example/administrator/seven/main/find/adapter/QuestionsAdapter.java new file mode 100644 index 0000000..4fdcf93 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/adapter/QuestionsAdapter.java @@ -0,0 +1,230 @@ +package com.example.administrator.seven.main.find.adapter; + +import android.annotation.TargetApi; +import android.content.Context; +import android.os.Build; +import android.util.Log; +import android.view.View; +import android.webkit.WebView; +import android.widget.FrameLayout; +import android.widget.LinearLayout; +import android.widget.RelativeLayout; +import android.widget.TextView; + +import com.example.administrator.seven.R; +import com.example.administrator.seven.base.BaseRecycleAdapter; +import com.example.administrator.seven.base.BaseViewHolder; +import com.example.administrator.seven.main.find.entity.QuestionsEntity; +import com.example.administrator.seven.utils.GlideTools; +import com.example.administrator.seven.widget.CircleImageView; + +import org.jsoup.Jsoup; +import org.jsoup.nodes.Document; +import org.jsoup.nodes.Element; +import org.jsoup.select.Elements; + +import java.util.List; + +import androidx.core.content.ContextCompat; + +/** + * QuestionsAdapter + * (๑• . •๑) + * 类描述: 答疑记录适配器 + * Created by LeiXiaoXing on 2017/5/22 19:53 + */ + +public class QuestionsAdapter extends BaseRecycleAdapter { + + + private final int ITEM_TYPE_LEFT = 1; + private final int ITEM_TYPE_RIGHT = 2; + private Context mContext; + + /** + * 构造Adapter + * + * @param context 上下文 + * @param questionEntities 数据集合 + * @param canLoadMore 是否支持加载更多 + */ + public QuestionsAdapter(Context context, List questionEntities, boolean canLoadMore) { + super(context, questionEntities, canLoadMore); + mContext = context; + } + + @Override + protected ViewHolder createViewHolder(View view, int viewType) { + if (viewType == ITEM_TYPE_LEFT) { + return new ViewHolder(view); + } else if (viewType == ITEM_TYPE_RIGHT) { + return new QuestionViewHolder(view); + } + return null; + } + + @Override + protected int getCustomItemViewType(int position) { + return 1 == mEList.get(position).getIs_self() ? ITEM_TYPE_RIGHT : ITEM_TYPE_LEFT; + } + + @Override + protected int getItemLayout(int viewType) { + if (viewType == ITEM_TYPE_LEFT) { + return R.layout.item_question_left; + } else if (viewType == ITEM_TYPE_RIGHT) { + return R.layout.item_question_right; + } + return 0; + } + + + /** + * 创建绿色健康文本 + * + * @param msg 文本内容 + * @return + */ + private TextView createTextView(String msg) { + TextView textView = new TextView(mContext); + textView.setPadding(0, 10, 0, 10); + textView.setTextColor(ContextCompat.getColor(mContext, R.color.colorAccent)); + textView.setText(msg); + textView.setTextSize(16); + return textView; + } + + /** + * 创建绿色健康文本 + * + * @param msg 文本内容 + * @return + */ + private WebView createWebView(String msg) { + WebView webView = new WebView(mContext); + RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams( + RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); + webView.setLayoutParams(layoutParams); +// webView.getSettings().setLoadWithOverviewMode(true);// 缩放至屏幕的大小 + + webView.loadDataWithBaseURL(null, getNewContent(msg), "text/html", "utf-8", null); + return webView; + } + + + class ViewHolder extends BaseViewHolder { + + TextView tvContent; + private FrameLayout view_content_fl; + private LinearLayout view_content_ll; + + protected ViewHolder(View itemView) { + super(itemView); + } + + @Override + protected void initView(View itemView) { + tvContent = (TextView) itemView.findViewById(R.id.tv_content); + view_content_fl = (FrameLayout) itemView.findViewById(R.id.view_content_fl); + view_content_ll = (LinearLayout) itemView.findViewById(R.id.view_content_ll); + } + + @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1) + @Override + protected void bindView(final QuestionsEntity entity, int position) { + Log.e("entity.getMsg()", "bindView: " + entity.getMsg()); + tvContent.setText(entity.getMsg()); + //0 = 解答内容回复 , 1 = 回答满意/不满意 ,2 = 点击提交问题 + if (entity.getReply_type() == 1) { + view_content_fl.setVisibility(View.GONE);//隐藏帧布局,使用线性布局 + view_content_ll.setVisibility(View.VISIBLE); + view_content_ll.removeAllViews(); + view_content_ll.setOrientation(LinearLayout.HORIZONTAL); + LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); + layoutParams.setMarginEnd(100); + TextView tvUnsatisfy = createTextView("不满意"); + TextView tvSatisfy = createTextView("满意"); + tvUnsatisfy.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + // mContext.startActivity(new Intent(mContext, QuestionsAddedActivity.class)); + } + }); + tvSatisfy.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { +// Toast.makeText(mContext, "满意", Toast.LENGTH_SHORT).show(); + // mListener.onClick(); + } + }); + view_content_ll.addView(tvUnsatisfy, layoutParams); + view_content_ll.addView(tvSatisfy); + } else if (entity.getReply_type() == 2) { + view_content_ll.setVisibility(View.VISIBLE); + view_content_fl.setVisibility(View.GONE);//隐藏帧布局,使用线性布局 + view_content_ll.removeAllViews(); + TextView textView = createTextView("点击提交问题和关键字 >"); + textView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + // Intent intent=new Intent(mContext, QuestionsAddedActivity.class); + // intent.putExtra("question",entity.getQuestion());//把问题传到提交问题界面 + // mContext.startActivity(intent); + //mContext.startActivity(new Intent(mContext, QuestionsAddedActivity.class)); + } + }); + view_content_ll.addView(textView); + } else { + view_content_fl.setVisibility(View.VISIBLE); + view_content_ll.setVisibility(View.GONE); + List data = entity.getData(); + if (data == null) { + return; + } +// view_content.setOrientation(LinearLayout.VERTICAL); + view_content_fl.removeAllViews(); + for (int i = 0; i < data.size(); i++) { + //i + 1 + "." + data.get(i).getContent() + view_content_fl.addView(createWebView(data.get(i).getContent())); +// view_content.addView(createTextView(data.get(i).getContent())); + Log.d("log","content:"+data.get(i).getContent()); + } + Log.d("log",data.toString()); + } + } + } + + private String getNewContent(String htmlText) { + Document doc = Jsoup.parse(htmlText); + Elements elements = doc.getElementsByTag("img"); + for (Element element : elements) { + element.attr("width", "auto").attr("height", "auto"); + } + return doc.toString(); + } + + + /** + * 用户提问方的ViewHolder + */ + private class QuestionViewHolder extends ViewHolder { + + private CircleImageView ivAvatar; + + private QuestionViewHolder(View itemView) { + super(itemView); + } + + @Override + protected void initView(View itemView) { + super.initView(itemView); + ivAvatar = (CircleImageView) itemView.findViewById(R.id.iv_icon); + } + + @Override + protected void bindView(QuestionsEntity entity, int position) { + tvContent.setText(entity.getMsg()); + GlideTools.init(mContext).displaypic(ivAvatar, "", R.mipmap.icon_default_head); + } + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/entity/QuestionsEntity.java b/app/src/main/java/com/example/administrator/seven/main/find/entity/QuestionsEntity.java new file mode 100644 index 0000000..8efb5e6 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/entity/QuestionsEntity.java @@ -0,0 +1,92 @@ +package com.example.administrator.seven.main.find.entity; + +import java.util.List; + +/** + * QuestionsEntity + * (๑• . •๑) + * 类描述: + * Created by LeiXiaoXing on 2017/5/22 19:46 + */ + +public class QuestionsEntity { + + /** + * msg : 关键字"为什么"的解答如下 + * is_self : 0 + * data : [{"id":"69","content":"每年农历冬至这天,不论贫富,饺子是必不可少的节日饭。这种习俗,据说是为了纪念\u201c医圣\u201d张仲景。"},{"id":"70","content":"为了纪念这位\u201c医圣\u201d也为了冬天不冻耳朵,人们学着\u201c娇耳\u201d的样子,包成食物,也叫\u201c饺子\u201d或\u201c扁食\u201d。"},{"id":"71","content":"金字塔是古代埃及劳动人民智慧的结晶,是世界古代文明史上的奇迹。"},{"id":"72","content":"在《圣经》中,记载着这么一个故事:耶稣和他的十二个门徒逾越节聚会。在晚餐时,耶稣说:\u201c你们中有一个人要出卖我。 \u201d果然,门徒中的犹大向统治者告发了耶稣,耶稣被钉死在十字架上。当时晚餐桌上正好是十三个人,人们就认为是这个\u201c13\u201d带来了不幸。"}] + * reply_type : 0 + */ + + private String msg; + private int is_self; + private int reply_type; + private List data; + private String question; + + public String getQuestion() { + return question; + } + + public void setQuestion(String question) { + this.question = question; + } + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public int getIs_self() { + return is_self; + } + + public void setIs_self(int is_self) { + this.is_self = is_self; + } + + public int getReply_type() { + return reply_type; + } + + public void setReply_type(int reply_type) { + this.reply_type = reply_type; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataEntity { + /** + * id : 69 + * content : 每年农历冬至这天,不论贫富,饺子是必不可少的节日饭。这种习俗,据说是为了纪念“医圣”张仲景。 + */ + + private String id; + private String content; + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getContent() { + return content; + } + + public void setContent(String content) { + this.content = content; + } + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/mvp/contract/QuestionsContract.java b/app/src/main/java/com/example/administrator/seven/main/find/mvp/contract/QuestionsContract.java new file mode 100644 index 0000000..d7b459f --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/mvp/contract/QuestionsContract.java @@ -0,0 +1,50 @@ +package com.example.administrator.seven.main.find.mvp.contract; + +import com.example.administrator.seven.base.BaseTreeView; +import com.example.administrator.seven.main.find.entity.QuestionsEntity; +import com.example.administrator.seven.network.ApiCallBack; + +import java.util.List; + +/** + * QuestionsContract + * (๑• . •๑) + * 类描述: + * Created by LeiXiaoXing on 2017/5/22 19:43 + */ + +public class QuestionsContract { + + public interface View extends BaseTreeView { + + /** + * 获取输入内容 + * + * @return + */ + String getInput(); + + /** + * 叠加数据 + * + * @param list + */ + void upDataAdd(List list); + } + + public interface Presenter { + void sendMsg(); + } + + public interface Model { + /** + * 发送消息 + * + * @param qu_key 关键字 + * @param callBack 回调 + */ + void sendMsg(String qu_key, ApiCallBack> callBack); + } + + +} \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/find/mvp/model/QuestionsModelImpl.java b/app/src/main/java/com/example/administrator/seven/main/find/mvp/model/QuestionsModelImpl.java new file mode 100644 index 0000000..afd65db --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/mvp/model/QuestionsModelImpl.java @@ -0,0 +1,42 @@ +package com.example.administrator.seven.main.find.mvp.model; + +import com.example.administrator.seven.main.find.entity.QuestionsEntity; +import com.example.administrator.seven.main.find.mvp.contract.QuestionsContract; +import com.example.administrator.seven.network.ApiCallBack; +import com.example.administrator.seven.network.ApiUtils; +import com.example.administrator.seven.network.http.ResponseBean; +import com.example.administrator.seven.utils.checkVersionsUtils.ProfileSpUtils; + +import java.util.List; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.annotations.NonNull; +import io.reactivex.functions.Consumer; +import io.reactivex.schedulers.Schedulers; + +/** + * Created by 雷小星🍀 on 2017/05/22 + */ + +public class QuestionsModelImpl implements QuestionsContract.Model { + + @Override + public void sendMsg(String qu_key, final ApiCallBack> callBack) { + ApiUtils.getApi() + .ask(ProfileSpUtils.getInstance().getUserProfie().getData().getUuid() + , qu_key) + .observeOn(AndroidSchedulers.mainThread()) + .subscribeOn(Schedulers.io()) + .subscribe(new Consumer>>() { + @Override + public void accept(@NonNull ResponseBean> listResponseBean) throws Exception { + callBack.onResponse(listResponseBean); + } + }, new Consumer() { + @Override + public void accept(@NonNull Throwable throwable) throws Exception { + callBack.onFailure(throwable); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/find/mvp/presenter/QuestionsPresenterImpl.java b/app/src/main/java/com/example/administrator/seven/main/find/mvp/presenter/QuestionsPresenterImpl.java new file mode 100644 index 0000000..f4f8b11 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/mvp/presenter/QuestionsPresenterImpl.java @@ -0,0 +1,56 @@ +package com.example.administrator.seven.main.find.mvp.presenter; + +import com.example.administrator.seven.main.find.entity.QuestionsEntity; +import com.example.administrator.seven.main.find.mvp.contract.QuestionsContract; +import com.example.administrator.seven.main.find.mvp.model.QuestionsModelImpl; +import com.example.administrator.seven.network.ApiCallBack; +import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter; + +import java.util.ArrayList; +import java.util.List; + +/** + * Created by 雷小星🍀 on 2017/05/22 + */ + +public class QuestionsPresenterImpl extends MvpBasePresenter implements QuestionsContract.Presenter { + + private QuestionsModelImpl mModel; + + public QuestionsPresenterImpl() { + mModel = new QuestionsModelImpl(); + } + + @Override + public void sendMsg() { + if (getView() == null) { + return; + } + //获取输入 + String input = getView().getInput(); + List question = new ArrayList<>(); + QuestionsEntity questionsEntity = new QuestionsEntity(); + questionsEntity.setIs_self(1);//表明是自己发送的 + questionsEntity.setMsg(input);//设置问题内容 + question.add(questionsEntity); + getView().upDataAdd(question); + //用户提问,获取服务器回答 + mModel.sendMsg(input, new ApiCallBack>() { + @Override + protected void onSuccess(List responseData, String message) { + if (getView() == null) { + return; + } + getView().upDataAdd(responseData); + } + + @Override + protected void onFailure(String error) { + if (getView() == null) { + return; + } + getView().toast(error); + } + }); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/example/administrator/seven/main/find/ui/CommentFragment.java b/app/src/main/java/com/example/administrator/seven/main/find/ui/CommentFragment.java new file mode 100644 index 0000000..cd69a0a --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/ui/CommentFragment.java @@ -0,0 +1,118 @@ +package com.example.administrator.seven.main.find.ui; + +import android.widget.Toast; + +import com.example.administrator.seven.JsonUtils; +import com.example.administrator.seven.R; +import com.example.administrator.seven.dialog.BaseTipsDialog; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; +import com.example.administrator.seven.main.kehu.Dialog.CusOperationDialog; +import com.example.administrator.seven.main.kehu.MobanFragment; +import com.example.administrator.seven.main.kehu.activity.ShowAty; +import com.example.administrator.seven.main.kehu.adapter.CusListAdapter; +import com.example.administrator.seven.okgonet.NetApi; +import com.example.administrator.seven.okgonet.Observer; +import com.example.administrator.seven.utils.checkVersionsUtils.ProfileSpUtils; +import com.lzy.okgo.model.Response; + +import java.util.List; + +import androidx.recyclerview.widget.LinearLayoutManager; + + +public class CommentFragment extends MobanFragment { + + + public CommentFragment() { + super(); + + } + @Override + public void initAdapter() { + mMarkingFragmentRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + CusListAdapter markingtwoAdapter = new CusListAdapter(mContext, null); + getAdpter(markingtwoAdapter); + mMarkingFragmentRecyclerView.setAdapter(markingtwoAdapter); + markingtwoAdapter.operationListenner(new CusListAdapter.OnViewClickListener() { + @Override + public void operation(final CustomerListBean.ResultBean.DataBean item) { + new CusOperationDialog(getActivity(), R.style.dialog, new CusOperationDialog.OnCloseListener() { + @Override + public void phoneClick() {//拨打电话 + if (item.getPhone() != null) { + call(item.getPhone()); + } + } + + @Override + public void kaidanonClick() {//删除客户 + new BaseTipsDialog().showDownloadDialog(getActivity(), "确认删除该客户吗?", "确定", new BaseTipsDialog.ClickListener() { + @Override + public void confirm() { + Toast.makeText(getActivity(), "还没调接口", Toast.LENGTH_SHORT).show(); + } + + @Override + public void cancle() { + + } + }); + } + + //信息完善 + @Override + public void uploadAvatar() { + + } + + }).show(); + } + + @Override + public void enterCusDetail(CustomerListBean.ResultBean.DataBean item) { + //进入查看评论 + ShowAty.CustomerDetailActivity(getActivity(),item); + } + }); + } + + @Override + public void requestData() { + new NetApi().customerList(ProfileSpUtils.getInstance().getUserProfie().getData().getUuid(),"").subscribe(new Observer() { + @Override + public void onNext(Response response) { + String body = (String) response.body(); + CustomerListBean.ResultBean result = JsonUtils.fromJson(body, CustomerListBean.class).getResult(); + mSwl.setRefreshing(false); + if (result != null && String.valueOf(result.getSuccess()).equals("0")) { + + List data = result.getData(); + if (data.size() == 0) { + markingtwoAdapter.setEmptyView(notDataView); + return; + } + if (mNextRequestPage == 1) { + setData(true, data); + } else { + setData(false, data); + } + } else { + setData(true, null); + markingtwoAdapter.setEmptyView(notDataView); + mSwl.setRefreshing(false); + } + } + @Override + public void onError(Exception e) { + e.printStackTrace(); + markingtwoAdapter.setEmptyView(errorView); + mSwl.setRefreshing(false); + } + }); + + } + @Override + public void onDestroy() { + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/ui/FindFragmenttwo.java b/app/src/main/java/com/example/administrator/seven/main/find/ui/FindFragmenttwo.java new file mode 100644 index 0000000..7855431 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/ui/FindFragmenttwo.java @@ -0,0 +1,118 @@ +package com.example.administrator.seven.main.find.ui; + +import android.widget.Toast; + +import com.example.administrator.seven.JsonUtils; +import com.example.administrator.seven.R; +import com.example.administrator.seven.dialog.BaseTipsDialog; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; +import com.example.administrator.seven.main.kehu.Dialog.CusOperationDialog; +import com.example.administrator.seven.main.kehu.MobanFragment; +import com.example.administrator.seven.main.kehu.activity.ShowAty; +import com.example.administrator.seven.main.kehu.adapter.CusListAdapter; +import com.example.administrator.seven.okgonet.NetApi; +import com.example.administrator.seven.okgonet.Observer; +import com.example.administrator.seven.utils.checkVersionsUtils.ProfileSpUtils; +import com.lzy.okgo.model.Response; + +import java.util.List; + +import androidx.recyclerview.widget.LinearLayoutManager; + + +public class FindFragmenttwo extends MobanFragment { + + + public FindFragmenttwo() { + super(); + + } + @Override + public void initAdapter() { + mMarkingFragmentRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + CusListAdapter markingtwoAdapter = new CusListAdapter(mContext, null); + getAdpter(markingtwoAdapter); + mMarkingFragmentRecyclerView.setAdapter(markingtwoAdapter); + markingtwoAdapter.operationListenner(new CusListAdapter.OnViewClickListener() { + @Override + public void operation(final CustomerListBean.ResultBean.DataBean item) { + new CusOperationDialog(getActivity(), R.style.dialog, new CusOperationDialog.OnCloseListener() { + @Override + public void phoneClick() {//拨打电话 + if (item.getPhone() != null) { + call(item.getPhone()); + } + } + + @Override + public void kaidanonClick() {//删除客户 + new BaseTipsDialog().showDownloadDialog(getActivity(), "确认删除该客户吗?", "确定", new BaseTipsDialog.ClickListener() { + @Override + public void confirm() { + Toast.makeText(getActivity(), "还没调接口", Toast.LENGTH_SHORT).show(); + } + + @Override + public void cancle() { + + } + }); + } + + //信息完善 + @Override + public void uploadAvatar() { + + } + + }).show(); + } + + @Override + public void enterCusDetail(CustomerListBean.ResultBean.DataBean item) { + //进入查看评论 + ShowAty.CommentActivity(getActivity(),20); + } + }); + } + + @Override + public void requestData() { + new NetApi().customerList(ProfileSpUtils.getInstance().getUserProfie().getData().getUuid(),"").subscribe(new Observer() { + @Override + public void onNext(Response response) { + String body = (String) response.body(); + CustomerListBean.ResultBean result = JsonUtils.fromJson(body, CustomerListBean.class).getResult(); + mSwl.setRefreshing(false); + if (result != null && String.valueOf(result.getSuccess()).equals("0")) { + + List data = result.getData(); + if (data.size() == 0) { + markingtwoAdapter.setEmptyView(notDataView); + return; + } + if (mNextRequestPage == 1) { + setData(true, data); + } else { + setData(false, data); + } + } else { + setData(true, null); + markingtwoAdapter.setEmptyView(notDataView); + mSwl.setRefreshing(false); + } + } + @Override + public void onError(Exception e) { + e.printStackTrace(); + markingtwoAdapter.setEmptyView(errorView); + mSwl.setRefreshing(false); + } + }); + + } + @Override + public void onDestroy() { + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/find/ui/PrivateletterFragment.java b/app/src/main/java/com/example/administrator/seven/main/find/ui/PrivateletterFragment.java new file mode 100644 index 0000000..a6fb577 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/main/find/ui/PrivateletterFragment.java @@ -0,0 +1,121 @@ +package com.example.administrator.seven.main.find.ui; + +import android.widget.Toast; + +import com.example.administrator.seven.JsonUtils; +import com.example.administrator.seven.R; +import com.example.administrator.seven.dialog.BaseTipsDialog; +import com.example.administrator.seven.main.find.adapter.PrivateletAdapter; +import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; +import com.example.administrator.seven.main.kehu.Dialog.CusOperationDialog; +import com.example.administrator.seven.main.kehu.MobanFragment; +import com.example.administrator.seven.main.kehu.activity.ShowAty; +import com.example.administrator.seven.main.kehu.adapter.CusListAdapter; +import com.example.administrator.seven.okgonet.NetApi; +import com.example.administrator.seven.okgonet.Observer; +import com.example.administrator.seven.utils.checkVersionsUtils.ProfileSpUtils; +import com.lzy.okgo.model.Response; + +import java.util.List; + +import androidx.recyclerview.widget.LinearLayoutManager; + +/** + * 私信 + */ +public class PrivateletterFragment extends MobanFragment { + + + public PrivateletterFragment() { + super(); + + } + @Override + public void initAdapter() { + mMarkingFragmentRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); + PrivateletAdapter markingtwoAdapter = new PrivateletAdapter(mContext, null); + getAdpter(markingtwoAdapter); + mMarkingFragmentRecyclerView.setAdapter(markingtwoAdapter); + markingtwoAdapter.operationListenner(new PrivateletAdapter.OnViewClickListener() { + @Override + public void operation(final CustomerListBean.ResultBean.DataBean item) { + new CusOperationDialog(getActivity(), R.style.dialog, new CusOperationDialog.OnCloseListener() { + @Override + public void phoneClick() {//拨打电话 + if (item.getPhone() != null) { + call(item.getPhone()); + } + } + + @Override + public void kaidanonClick() {//删除客户 + new BaseTipsDialog().showDownloadDialog(getActivity(), "确认删除该客户吗?", "确定", new BaseTipsDialog.ClickListener() { + @Override + public void confirm() { + Toast.makeText(getActivity(), "还没调接口", Toast.LENGTH_SHORT).show(); + } + + @Override + public void cancle() { + + } + }); + } + + //信息完善 + @Override + public void uploadAvatar() { + + } + + }).show(); + } + + @Override + public void enterCusDetail(CustomerListBean.ResultBean.DataBean item) { + //进入回话页 + ShowAty.ConversationActivity(getActivity()); + } + }); + } + + @Override + public void requestData() { + new NetApi().customerList(ProfileSpUtils.getInstance().getUserProfie().getData().getUuid(),"").subscribe(new Observer() { + @Override + public void onNext(Response response) { + String body = (String) response.body(); + CustomerListBean.ResultBean result = JsonUtils.fromJson(body, CustomerListBean.class).getResult(); + mSwl.setRefreshing(false); + if (result != null && String.valueOf(result.getSuccess()).equals("0")) { + + List data = result.getData(); + if (data.size() == 0) { + markingtwoAdapter.setEmptyView(notDataView); + return; + } + if (mNextRequestPage == 1) { + setData(true, data); + } else { + setData(false, data); + } + } else { + setData(true, null); + markingtwoAdapter.setEmptyView(notDataView); + mSwl.setRefreshing(false); + } + } + @Override + public void onError(Exception e) { + e.printStackTrace(); + markingtwoAdapter.setEmptyView(errorView); + mSwl.setRefreshing(false); + } + }); + + } + @Override + public void onDestroy() { + super.onDestroy(); + } +} diff --git a/app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java b/app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java index 2d44b29..b832679 100644 --- a/app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java +++ b/app/src/main/java/com/example/administrator/seven/main/kehu/activity/ShowAty.java @@ -5,6 +5,10 @@ import android.content.Intent; import android.os.Bundle; import com.example.administrator.seven.db.DbRecordBeanData; +import com.example.administrator.seven.main.find.CloundSolutionActivity; +import com.example.administrator.seven.main.find.CommentActivity; +import com.example.administrator.seven.main.find.ConversationActivity; +import com.example.administrator.seven.main.find.MainActivitytwot; import com.example.administrator.seven.main.kehu.Bean.CustomerListBean; import java.io.Serializable; @@ -50,5 +54,27 @@ public class ShowAty { i.putExtra("customer_id",item.getCustomer_id()); ctx.startActivity(i); } + public static void CommentActivity(Context ctx,int num) { + Intent i = new Intent(ctx, CommentActivity.class); + i.putExtra("num",num+""); + ctx.startActivity(i); + } + + + public static void ConversationActivity(Context ctx) { + Intent i = new Intent(ctx, ConversationActivity.class); + ctx.startActivity(i); + } + + + public static void CloundSolutionActivity(Context ctx) { + Intent i = new Intent(ctx, CloundSolutionActivity.class); + ctx.startActivity(i); + } + public static void MainActivitytwot(Context ctx) { + Intent i = new Intent(ctx, MainActivitytwot.class); + ctx.startActivity(i); + } + } diff --git a/app/src/main/java/com/example/administrator/seven/main/my/MyFragment.java b/app/src/main/java/com/example/administrator/seven/main/my/MyFragment.java index d797e7b..560baa7 100644 --- a/app/src/main/java/com/example/administrator/seven/main/my/MyFragment.java +++ b/app/src/main/java/com/example/administrator/seven/main/my/MyFragment.java @@ -13,6 +13,7 @@ import com.example.administrator.seven.main.Fragment.mvp.contract.MyContract; import com.example.administrator.seven.main.Fragment.mvp.presenter.MyPresenterImpl; import com.example.administrator.seven.main.activity.LoginPasswordActivity; import com.example.administrator.seven.main.activity.Main2Activity; +import com.example.administrator.seven.utils.StatusBarUtil; import com.example.administrator.seven.utils.ToolsUtils; import com.example.administrator.seven.utils.checkVersionsUtils.ProfileSpUtils; import com.example.administrator.seven.view.webview.XfiveWebActivity; @@ -60,6 +61,7 @@ public class MyFragment @Override protected void initView(View view) { + mSwipeRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.SwipeRefreshLayout); mSwipeRefreshLayout.setColorSchemeColors(ContextCompat.getColor(mContext, R.color.colorAccent)); //初始化用户资料控件 diff --git a/app/src/main/java/com/example/administrator/seven/main/zhibo/SendFragment.java b/app/src/main/java/com/example/administrator/seven/main/zhibo/LivebroFragment.java similarity index 93% rename from app/src/main/java/com/example/administrator/seven/main/zhibo/SendFragment.java rename to app/src/main/java/com/example/administrator/seven/main/zhibo/LivebroFragment.java index d84285c..2a96626 100644 --- a/app/src/main/java/com/example/administrator/seven/main/zhibo/SendFragment.java +++ b/app/src/main/java/com/example/administrator/seven/main/zhibo/LivebroFragment.java @@ -9,7 +9,10 @@ import android.widget.TextView; import com.example.administrator.seven.R; import com.example.administrator.seven.base.BaseFragment; -public class SendFragment extends BaseFragment { +/** + * 直播 + */ +public class LivebroFragment extends BaseFragment { private View mContentView; private TextView titleTv; diff --git a/app/src/main/java/com/example/administrator/seven/network/http/MyApi.java b/app/src/main/java/com/example/administrator/seven/network/http/MyApi.java index 6390022..9eb6641 100644 --- a/app/src/main/java/com/example/administrator/seven/network/http/MyApi.java +++ b/app/src/main/java/com/example/administrator/seven/network/http/MyApi.java @@ -3,9 +3,12 @@ package com.example.administrator.seven.network.http; import com.example.administrator.seven.main.entity.LoginBean; import com.example.administrator.seven.main.entity.mine.TreeUserEntity; +import com.example.administrator.seven.main.find.entity.QuestionsEntity; import com.example.administrator.seven.main.kehu.Bean.CommitDesignModel; import com.example.administrator.seven.main.kehu.Bean.industryBean; +import java.util.List; + import io.reactivex.Observable; import retrofit2.http.Field; import retrofit2.http.FormUrlEncoded; @@ -132,6 +135,19 @@ public class MyApi { , @Field("content") String content); + /** + * 答疑解惑 + * 提交问题 + * + * @param user_id 用户token + * @param qu_key 问题关键字 + * @return + */ + @POST("robotQA/ask") + @FormUrlEncoded + Observable>> ask(@Field("user_id") String user_id + , @Field("qu_key") String qu_key); + } } diff --git a/app/src/main/java/com/example/administrator/seven/utils/StatusBarUtil.java b/app/src/main/java/com/example/administrator/seven/utils/StatusBarUtil.java new file mode 100644 index 0000000..29c0cc9 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/utils/StatusBarUtil.java @@ -0,0 +1,205 @@ +package com.example.administrator.seven.utils; + +import android.annotation.TargetApi; +import android.app.Activity; +import android.graphics.Color; +import android.os.Build; +import android.view.View; +import android.view.Window; +import android.view.WindowManager; + +import com.readystatesoftware.systembartint.SystemBarTintManager; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +/** + * Created by XiaoQiang on 2017/6/21. + */ +public class StatusBarUtil { + + /** + * 修改状态栏为全透明 + * @param activity + */ + @TargetApi(19) + public static void transparencyBar(Activity activity){ + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(Color.WHITE); + + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + Window window =activity.getWindow(); + window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, + WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + } + + /** + * 修改状态栏颜色,支持4.4以上版本 + * @param activity + * @param colorId + */ + public static void setStatusBarColor(Activity activity,int colorId) { + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); +// window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(activity.getResources().getColor(colorId)); + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + //使用SystemBarTint库使4.4版本状态栏变色,需要先将状态栏设置为透明 + transparencyBar(activity); + SystemBarTintManager tintManager = new SystemBarTintManager(activity); + tintManager.setStatusBarTintEnabled(true); + tintManager.setStatusBarTintResource(colorId); + } + } + + /** + *状态栏亮色模式,设置状态栏黑色文字、图标, + * 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android + * @param activity + * @return 1:MIUUI 2:Flyme 3:android6.0 + */ + public static int StatusBarLightMode(Activity activity){ + int result=0; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + if(MIUISetStatusBarLightMode(activity, true)){ + result=1; + }else if(FlymeSetStatusBarLightMode(activity.getWindow(), true)){ + result=2; + }else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + result=3; + }else{ + if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = activity.getWindow(); + window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN + | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); + window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); + window.setStatusBarColor(Color.BLACK); + + } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { + Window window =activity.getWindow(); + window.setFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS, + WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); + } + } + } + return result; + } + + /** + * 已知系统类型时,设置状态栏黑色文字、图标。 + * 适配4.4以上版本MIUIV、Flyme和6.0以上版本其他Android + * @param activity + * @param type 1:MIUUI 2:Flyme 3:android6.0 + */ + public static void StatusBarLightMode(Activity activity,int type){ + if(type==1){ + MIUISetStatusBarLightMode(activity, true); + }else if(type==2){ + FlymeSetStatusBarLightMode(activity.getWindow(), true); + }else if(type==3){ + activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN|View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + } + + } + + /** + * 状态栏暗色模式,清除MIUI、flyme或6.0以上版本状态栏黑色文字、图标 + */ + public static void StatusBarDarkMode(Activity activity,int type){ + if(type==1){ + MIUISetStatusBarLightMode(activity, false); + }else if(type==2){ + FlymeSetStatusBarLightMode(activity.getWindow(), false); + }else if(type==3){ + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); + } + + } + + + /** + * 设置状态栏图标为深色和魅族特定的文字风格 + * 可以用来判断是否为Flyme用户 + * @param window 需要设置的窗口 + * @param dark 是否把状态栏文字及图标颜色设置为深色 + * @return boolean 成功执行返回true + * + */ + public static boolean FlymeSetStatusBarLightMode(Window window, boolean dark) { + boolean result = false; + if (window != null) { + try { + WindowManager.LayoutParams lp = window.getAttributes(); + Field darkFlag = WindowManager.LayoutParams.class + .getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON"); + Field meizuFlags = WindowManager.LayoutParams.class + .getDeclaredField("meizuFlags"); + darkFlag.setAccessible(true); + meizuFlags.setAccessible(true); + int bit = darkFlag.getInt(null); + int value = meizuFlags.getInt(lp); + if (dark) { + value |= bit; + } else { + value &= ~bit; + } + meizuFlags.setInt(lp, value); + window.setAttributes(lp); + result = true; + } catch (Exception e) { + + } + } + return result; + } + + /** + * 需要MIUIV6以上 + * @param activity + * @param dark 是否把状态栏文字及图标颜色设置为深色 + * @return boolean 成功执行返回true + * + */ + public static boolean MIUISetStatusBarLightMode(Activity activity, boolean dark) { + boolean result = false; + Window window=activity.getWindow(); + if (window != null) { + Class clazz = window.getClass(); + try { + int darkModeFlag = 0; + Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams"); + Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE"); + darkModeFlag = field.getInt(layoutParams); + Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class); + if(dark){ + extraFlagField.invoke(window,darkModeFlag,darkModeFlag);//状态栏透明且黑色字体 + }else{ + extraFlagField.invoke(window, 0, darkModeFlag);//清除黑色字体 + } + result=true; + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + //开发版 7.7.13 及以后版本采用了系统API,旧方法无效但不会报错,所以两个方式都要加上 + if(dark){ + activity.getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN| View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); + }else { + activity.getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE); + } + } + }catch (Exception e){ + + } + } + return result; + } +} + diff --git a/app/src/main/java/com/example/administrator/seven/utils/StatusBarUtils.java b/app/src/main/java/com/example/administrator/seven/utils/StatusBarUtils.java deleted file mode 100644 index 11bb851..0000000 --- a/app/src/main/java/com/example/administrator/seven/utils/StatusBarUtils.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.example.administrator.seven.utils; - -import android.annotation.TargetApi; -import android.app.Activity; -import android.os.Build; -import android.view.Window; -import android.view.WindowManager; - -import com.readystatesoftware.systembartint.SystemBarTintManager; - -/** - * Created by Administrator on 2016/12/26. - *

- * 作者:xudiwei - *

- * 描述:MIUI 与MEIZI的状态栏字体颜色工具类 - */ - -public class StatusBarUtils { - - - public static void setStateBaeColor(Activity ac , int color ){ - // 4.4及以上版本开启 - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { - setTranslucentStatus(true , ac); - } - - SystemBarTintManager tintManager = new SystemBarTintManager(ac); - tintManager.setStatusBarTintEnabled(true); - tintManager.setNavigationBarTintEnabled(true); - - // 自定义颜色 - tintManager.setTintColor(color); - } - - - @TargetApi(19) - private static void setTranslucentStatus(boolean on , Activity acc) { - Window win = acc.getWindow(); - WindowManager.LayoutParams winParams = win.getAttributes(); - final int bits = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS; - if (on) { - winParams.flags |= bits; - } else { - winParams.flags &= ~bits; - } - win.setAttributes(winParams); - } -} diff --git a/app/src/main/java/com/example/administrator/seven/widget/PastEditText.java b/app/src/main/java/com/example/administrator/seven/widget/PastEditText.java new file mode 100644 index 0000000..bcff9e2 --- /dev/null +++ b/app/src/main/java/com/example/administrator/seven/widget/PastEditText.java @@ -0,0 +1,44 @@ +package com.example.administrator.seven.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.widget.EditText; + +/** + * Created by: xudiwei + *

+ * on: 2017/4/21. + *

+ * 描述: + */ + +public class PastEditText extends EditText { + + private static final String TAG = "PastEditText"; + + public PastEditText(Context context) { + super(context); + } + + public PastEditText(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public PastEditText(Context context, AttributeSet attrs, int defStyleAttr) { + super(context, attrs, defStyleAttr); + } + + @Override + public boolean onTextContextMenuItem(int id) { + +// if (id == android.R.id.paste) { +// ClipboardManager clipboardManager = (ClipboardManager) getContext().getSystemService(Context.CLIPBOARD_SERVICE); +// CharSequence text = clipboardManager.getText(); +// Log.d(TAG, "paste: " + text); +// SpannableString spannableString = EmojUtils.stringTransSpannable(getContext(), text.toString()); +// this.append(spannableString); +// return true; +// } + return super.onTextContextMenuItem(id); + } +} diff --git a/app/src/main/res/drawable-v21/selector_btn_green_bg.xml b/app/src/main/res/drawable-v21/selector_btn_green_bg.xml index 2780a38..c709483 100644 --- a/app/src/main/res/drawable-v21/selector_btn_green_bg.xml +++ b/app/src/main/res/drawable-v21/selector_btn_green_bg.xml @@ -1,11 +1,11 @@ + android:color="@color/colortheme"> - + @@ -15,7 +15,7 @@ - + @@ -23,7 +23,7 @@ - + diff --git a/app/src/main/res/drawable-xhdpi/chat_left_bg.9.png b/app/src/main/res/drawable-xhdpi/chat_left_bg.9.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7a6d808dfdef51a89cfc73dd018e2814c68b1c GIT binary patch literal 1128 zcmV-u1eg1XP)av!yAv0=kF=MUmxW%9+O&wcD;+{tSJzHJ z7@3`&6?!*ngw|1NmI?tO_J9dU6{A*Yekc_J!pp);tcp=9qQNQ+LP<%VO>2BD#$VJ}W7R5NOp2BD&&;y}_vz;H-QdI+_(wdn=~ z1A+m;fM7r{Agncq!*Qdxw>Nnqa5;*_lUt?5lT-*=4Z%D#G$d5CO+#?I-I+Mam%+h7 zU6#^f3IX5cviY&!?+=ZSj|-LUzab#>Q}LxI@Lt~ixw$!^x@`yoE<6MOcpv_`v$ONp z@bGX#T>QEaJRVOvE;1Kc{ucZh{`iS^91sLAe0q9X*>S&N2xvTqhdI{=0s%2KH5K{w zCedvT1hlu{gWE`UQ^8S$ywzgMTEPZr3ot1!N zS`eCc|t9v38S>MbO&Krt=7Xh zX2VZvKnj>M2!_Lk$7nkt>j|qOV-J5<;7~D{OqpmOAsAfvF%1ygISF4>ArSuF$OvKX zAQ*aCS=sJrE>RtVFv@EN1OtKr!6>;K5DW+ggcw6e?mbHygn)v(*8)-@cs!o3s_kR+ zdc93j_bj!yx4%$rN2|l(D3-c=4bhP2^ZCYA+1m`QKkMu3^QG=%WR0@5we_VcyWFXj znx*b&WsQO~y}tPZZMD=$t<)@am%CPM zVa56^JF(mCuaSL6_3{oBwO|Omp*CuyR%(_Cfz_w-^74IJ>8*gB)z#JAM8|L4Zud7N zq9EqwB|fFa$(PtC`=$nJp(biGnM_Bim71l${=;E`jJsc}J(Bj7e^sgD;nbjMp{8tV zq}G_e4W~s!mR6-c2O*cVFf5Gcg|kogO%2pSO`5jYz6}>08rqDJ#*R4^F%em<)?Bpn u;^FLzeX?)uhEU5+Z3x8mjaEJSU-k#n_vx})HD0y=0000P)RJ;Kz?@;mz>BPc2Fe7C`AS75wQ8B+& z4-6nk>`U+PS^7p_l22#*l3bF=8ippSF)v$*f^35ap%Stng%twrfp>udieQx`f(--;C_@Uc zr^Agf0aeg<3k2K&Z;}iIf4M@;tJnpsNy-9}*K5Qb#V%k!b^(i0iX+M|OrzKZ^kWy$ zja|S>)B>CY6`%ry2r!xfDnJFO02QDDRDcRl0bvDj|29}r3*i3Wu%s3+W-g$h7LYL) zkWmZhnAvY=j>Fzphg5)*kTVtF-yrcv0jZg_q;MMkEiyGF^bDWoOM4$Z^3Kz5B%CtX z5A4GaT4}xgLBauenPb`?x7K_7%bt+8m<>~Rz51=PEr=MpV#!vFlRytVaq-43{^ne| e&%XrcPVx!)GSV?9PIAQn0000@f)eW~is&Ki!yY1v>`SRAD2RF}G$PB)jn!Qh zNh^)TSa)}vbv||#f*yj5f`WSJse*3jFLz4pyRO^bof$aH-j}`q^P6+eojG$RB_%!w zOOfq}#bWuEOlE_PU1(=#_TK#OUbo8oeTJRZ*= zn(Tb5(Zo)+Z;G4KzcOfnCTN4keuY30aPFRdhZTmi69&MS=paqd295m&fhcbV?S0|- z2?xM3XyXyFSvZ8QuCCN*)a)*4&r4VUmKC>eq#R*Bhi0J=D8#lR0VO&B%b=AsZxafE z!pnvqQ=%X&@X@aslC4NlD2-kr3YR31vwG0a{7(2ih)EMM97U zfMw9!(9kf#_7Ey7E63O#0xgHJwuew#Tbt%Ua3DAk90(2s2f|ltGaoWVQC8a;0v@91 z!A}$LNG&gff>0)_)30G!c>WQD%n)X>y&)HC&~E_515MK=*%AV57e&O?ND(ul`djj2 z=U)_J<%eL|QDvPK6;ETa*a2PF(`*O9vg68n=G97>7FFLNUyyB~oH5Z>5PIi}^XiTs zAnj%l5%QSq7VRhp$u@L$cFyI|lDrW5?j(4lby3~TDmu=vfY}Tvp8&*05UjG?9CoAQ z6q4v0J*ww1#s=610^XxuPzxvmS{N;XM!)}otE#GMJTK2BH-sW(ExX=P+;fXf&TIZh z{#`XSHH*AnZ#JE$({?&eY6wBoPg~+mcB|toD~lXvmm~Xo&KP5>44bXYFpTa za({bub#*Q|okO;SEQ>5%`bdE0Kp=309-^+Os#-FO^- z1kmqkSPG4ejYFl+3D9gg`8|Wt1^y6oRhn z&9e0|8ivs#6hb&0E|RUIRZ)~9LVK2osLM2sSLho~_}*q^BO|S^>+9?13GH4(y{)aS z?U*cG?$8R&Li-p|Z$lwMRaJMQfA0W|&qJH^8+G?SZqF@#@ z3+-)2A%aIkHYN!K0w*Z@K2MZyprD18KrytD&iT*^%|g4}QGuzbs2J&XyQd)3Fj-w) z-5Q$sw5DmTrfI&UefcBq(&A(vF(>AR255mMXoE&*{mrV;pMCy=(4vexn%C(-dpWPz z=KfFP?+TW4O&QQAXc_$YYdBEmNhg!m-U1S`l!swXJRQfJm>U{+)i|AN>))^8tfhgh ziyIM4jI9WX$mjFTrLij>hPf~&e^r*wwWJDM0zaf7tNruw8JVHcS15z4(EtDd07*qo IM6N<$f?(<_rT_o{ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/chat_right_qp.9.png b/app/src/main/res/drawable-xhdpi/chat_right_qp.9.png new file mode 100644 index 0000000000000000000000000000000000000000..2eaa7dd9a71d4bac71a70a42b5ee232cfa700ed4 GIT binary patch literal 567 zcmV-70?7S|P)&d=T6b9{s zwUImiLa01V`~F0z8U?gARi0pWK1=0I&byipU8GgcJCxTEJKuC%u@?lv*g#(?n1CX7 z{yEF!+Q6UbJQcHO^PY*vOo=ZK)u&`BKSsLqHBziB4c(}z!hz8FH^M3_k#wpmjPL>A zN0GJa*xFktc();|{ht6Z?S5m(yhjeemD$Mutzz2!5MAC#0-##XE3g2_F}a>(05#wD z$CC^o>hQ+}fH1zR3jm7zCseE^Is(ppF_mZlT955501LnZumCIo3%~-f04x9tAh`fc zKNfH51z`Hc2&_+c1XNAG^VbT%^vhATKCJ*UUS-bU>+!Z)pLQ9aL#1aX0O`e|V>DAD z!|Q5Yu?achgyp+Uk9p zb3VM7` + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_clound_solution.xml b/app/src/main/res/layout/activity_clound_solution.xml new file mode 100644 index 0000000..415e39d --- /dev/null +++ b/app/src/main/res/layout/activity_clound_solution.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_comment.xml b/app/src/main/res/layout/activity_comment.xml new file mode 100644 index 0000000..c3875f7 --- /dev/null +++ b/app/src/main/res/layout/activity_comment.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_conversation.xml b/app/src/main/res/layout/activity_conversation.xml new file mode 100644 index 0000000..c3875f7 --- /dev/null +++ b/app/src/main/res/layout/activity_conversation.xml @@ -0,0 +1,19 @@ + + + + + + + + + + \ 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 074e075..36f381e 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -174,6 +174,7 @@ + + + + + + + + + +