| app/src/main/java/com/igo/user/ui/HomeActivity.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| app/src/main/res/values-fr/strings.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
app/src/main/java/com/igo/user/ui/HomeActivity.kt
@@ -190,8 +190,9 @@ override fun onResume() { super.onResume() if (checkLogin()) if (checkLogin(isLogin = false)) queryUserInfo() refreshAD() funcHome.clear() funcHome.add(Function(1, getString(R.string.专车))) funcHome.add(Function(4, getString(R.string.快件))) @@ -256,7 +257,6 @@ } } override fun initView() { bind.apply { drawerMain.setDrawerLockMode(DrawerLayout.LOCK_MODE_LOCKED_CLOSED) @@ -264,7 +264,21 @@ if (checkLogin()) queryUserInfo() if (checkLogin()) HttpManager.queryHomeEntrance( ).request(this) { _, data -> SPUtils.instance().put("imgUrlDelivery", data?.imgUrlDelivery).apply () SPUtils.instance().put("imgUrlTaxi", data?.imgUrlTaxi).apply () SPUtils.instance().put("imgUrlLogistics", data?.imgUrlLogistics).apply () Glide.with(this).load(data?.imgUrlDelivery).into(bind.img2) Glide.with(this).load(data?.imgUrlTaxi).into(bind.img1) Glide.with(this).load(data?.imgUrlLogistics).into(bind.img3) } } //刷新广告 private fun refreshAD(){ if (checkLogin(isLogin = false)) HttpManager.getAds( 2, IGoApplication.lat.toString(), @@ -272,6 +286,7 @@ ).request(this) { _, data -> data?.let { it.forEach { bind.llAds.removeAllViews() val view = layoutInflater.inflate(R.layout.item_img_ads, null) val iv_img = view.find<SimpleDraweeView>(R.id.iv_img) iv_img.setImageURI(it.imgUrl) @@ -294,20 +309,5 @@ } } } HttpManager.queryHomeEntrance( ).request(this) { _, data -> SPUtils.instance().put("imgUrlDelivery", data?.imgUrlDelivery).apply () SPUtils.instance().put("imgUrlTaxi", data?.imgUrlTaxi).apply () SPUtils.instance().put("imgUrlLogistics", data?.imgUrlLogistics).apply () Glide.with(this).load(data?.imgUrlDelivery).into(bind.img2) Glide.with(this).load(data?.imgUrlTaxi).into(bind.img1) Glide.with(this).load(data?.imgUrlLogistics).into(bind.img3) } } } app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
@@ -20,6 +20,7 @@ import androidx.core.content.ContextCompat import androidx.core.os.bundleOf import androidx.core.widget.NestedScrollView import androidx.lifecycle.lifecycleScope import cn.sinata.rxnetty.LogHelper.logRecord import cn.sinata.xldutils.callPhone import cn.sinata.xldutils.defaultScheduler @@ -49,6 +50,7 @@ import com.google.android.gms.maps.model.Polyline import com.google.android.gms.maps.model.PolylineOptions import com.google.android.material.bottomsheet.BottomSheetBehavior import com.google.gson.JsonObject import com.google.maps.android.PolyUtil import com.igo.user.IGoApplication import com.igo.user.IGoApplication.Companion.currentLatLng @@ -73,6 +75,8 @@ import com.igo.user.views.textbanner.TextBannerView import com.tbruyelle.rxpermissions2.RxPermissions import io.reactivex.subscribers.DisposableSubscriber import kotlinx.coroutines.delay import kotlinx.coroutines.launch import org.jetbrains.anko.backgroundResource import org.jetbrains.anko.find import org.jetbrains.anko.imageResource @@ -166,6 +170,8 @@ private val cl_special by lazy { find<View>(R.id.cl_special) } private val cl_taxi by lazy { find<View>(R.id.cl_taxi) } //是否循环刷新 private var hadLoopRefresh = false override fun onFirstVisibleToUser() { val language = SPUtils.instance().getString("language") tv_110.setCompoundDrawablesRelativeWithIntrinsicBounds( @@ -226,6 +232,7 @@ else behavior.setPeekHeight(dip(240), true) initMap() loopRefreshDriverNum() } private fun getNavigationBarHeight(): Int { @@ -242,7 +249,7 @@ try { lat = currentLatLng.latitude lon = currentLatLng.longitude logRecord("MapTripFragment","归位 lat = $lat , lon = $lon") logRecord("MapTripFragment", "归位 lat = $lat , lon = $lon") startByLocal = true aMap.animateCamera( CameraUpdateFactory.newLatLngZoom( @@ -253,7 +260,7 @@ ) ) } catch (e: Exception) { logRecord("MapTripFragment","归位异常 ${e.message}") logRecord("MapTripFragment", "归位异常 ${e.message}") } } iv_location2.setOnClickListener { @@ -647,36 +654,79 @@ private var noCarShowing = false fun getDriverNum() { getDriverNum { _, data -> val i = data?.optInt("number") ?: 0 val t = getString(R.string.当前附近有n辆车可用, i) val stringBuilder = SpanBuilder(t).bold( t.indexOf(i.toString()), t.indexOf(i.toString()) + i.toString().length ) .color( requireContext(), t.indexOf(i.toString()), t.indexOf(i.toString()) + i.toString().length, cn.sinata.xldutils.R.color.black ).build() activity?.takeIf { !it.isFinishing && !it.isDestroyed }?.also { mainActivity.updateTipText(stringBuilder) } if (i == 0 && !noCarShowing) { noCarShowing = true val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to getString(R.string.no_car), "isAlert" to true) tipDialog.showAllowingStateLoss(childFragmentManager, "noCar") tipDialog.setDismissCallback(object : TipDialog.OnDismiss { override fun onDismiss() { noCarShowing = false } }) } } } //循环刷新司机数量 private fun loopRefreshDriverNum() { if (hadLoopRefresh) { return } hadLoopRefresh = true lifecycleScope.launch { while (true) { delay(5000) getDriverNum { _, data -> val i = data?.optInt("number") ?: 0 val t = getString(R.string.当前附近有n辆车可用, i) val stringBuilder = SpanBuilder(t).bold( t.indexOf(i.toString()), t.indexOf(i.toString()) + i.toString().length ) .color( requireContext(), t.indexOf(i.toString()), t.indexOf(i.toString()) + i.toString().length, cn.sinata.xldutils.R.color.black ).build() activity?.takeIf { !it.isFinishing && !it.isDestroyed }?.also { mainActivity.updateTipText(stringBuilder) } } } } } private fun getDriverNum(success: (msg: String?, t: JsonObject?) -> Unit) { if (activity == null) return if (!mainActivity.isTripping && startLat != 0.0) HttpManager.getDriverNum(startLat, startLon, type).requestByF(this) { _, data -> val i = data?.optInt("number") ?: 0 val t = getString(R.string.当前附近有n辆车可用, i) val stringBuilder = SpanBuilder(t).bold( t.indexOf(i.toString()), t.indexOf(i.toString()) + i.toString().length ) .color( requireContext(), t.indexOf(i.toString()), t.indexOf(i.toString()) + i.toString().length, cn.sinata.xldutils.R.color.black ).build() mainActivity.updateTipText(stringBuilder) if (i == 0 && !noCarShowing) { noCarShowing = true val tipDialog = TipDialog() tipDialog.arguments = bundleOf("msg" to getString(R.string.no_car), "isAlert" to true) tipDialog.showAllowingStateLoss(childFragmentManager, "noCar") tipDialog.setDismissCallback(object : TipDialog.OnDismiss { override fun onDismiss() { noCarShowing = false } }) } } HttpManager.getDriverNum(startLat, startLon, type).requestByF( fragment = this, success = success ) } private fun getEmergencyEnable() { @@ -815,7 +865,7 @@ private var poiSearchDisposable: DisposableSubscriber<GeoBean>? = null // fun getPoi(lat: Double?, lng: Double?,call:(String.()->Unit)?=null) { fun getPoi(lat: Double?, lng: Double?, call: (String.() -> Unit)? = null) { if (lat == null || lng == null) { return } @@ -940,9 +990,9 @@ Const.OrderType.TYPE_SPECIAL -> { // mainActivity.updateTipAlpha(0f) cl_special.visible() if(chooseindex==2){ if (chooseindex == 2) { tv_passenger_special.visible() }else{ } else { tv_passenger_special.invisible() } callback?.invoke(false) @@ -1048,9 +1098,9 @@ name = data.getStringExtra("name") ?: "" phone = data.getStringExtra("phone") ?: "" tv_option.text = name Log.e( "选择的: ", name) Log.e("选择的: ", name) tv_passenger.text = name if(chooseindex==2)tv_passenger_special.visible() else tv_passenger_special.gone() if (chooseindex == 2) tv_passenger_special.visible() else tv_passenger_special.gone() tv_passenger_special.text = name } app/src/main/res/values-fr/strings.xml
@@ -960,7 +960,7 @@ <string name="邀请记录">Historique des invitations</string> <string name="专车">Course premium</string> <string name="专车">VTC</string> <string name="城际出行">Déplacements interurbains</string> xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
@@ -1,8 +1,5 @@ package cn.sinata.xldutils.utils; import static android.content.ContentValues.TAG; import android.annotation.TargetApi; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; @@ -10,60 +7,64 @@ import android.os.LocaleList; import android.text.TextUtils; import android.util.DisplayMetrics; import android.util.Log; import java.util.Locale; public class LanguageUtil { public static Context attachBaseContext(Context context, String language, String country) { Log.d(TAG, "attachBaseContext: "+ Build.VERSION.SDK_INT); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { return updateResources(context, language,country); } else { return context; } } @TargetApi(Build.VERSION_CODES.N) private static Context updateResources(Context context, String language, String country) { Resources resources = context.getResources(); Locale locale = new Locale(language); Locale.setDefault(locale); Resources resources = context.getResources(); Configuration configuration = new Configuration(resources.getConfiguration()); Configuration configuration = resources.getConfiguration(); configuration.setLocale(locale); configuration.setLocales(new LocaleList(locale)); return context.createConfigurationContext(configuration); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { configuration.setLocale(locale); LocaleList localeList = new LocaleList(locale); LocaleList.setDefault(localeList); configuration.setLocales(localeList); return context.createConfigurationContext(configuration); } else { configuration.locale = locale; resources.updateConfiguration(configuration, resources.getDisplayMetrics()); } return context; } /** * @param context * @param newLanguage 想要切换的语言类型 比如 Const.Language.ENGLISH ,"zh" */ @SuppressWarnings("deprecation") public static void changeAppLanguage(Context context, String newLanguage, String country) { if (TextUtils.isEmpty(newLanguage)) { return; } Locale locale = new Locale(newLanguage); Locale.setDefault(locale); Resources resources = context.getResources(); Configuration configuration = resources.getConfiguration(); //获取想要切换的语言类型 Locale locale = new Locale(newLanguage,country); configuration.setLocale(locale); // updateConfiguration DisplayMetrics dm = resources.getDisplayMetrics(); resources.updateConfiguration(configuration, dm); Configuration configuration = new Configuration(resources.getConfiguration()); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { configuration.setLocale(locale); LocaleList localeList = new LocaleList(locale); LocaleList.setDefault(localeList); configuration.setLocales(localeList); } else { configuration.locale = locale; resources.updateConfiguration(configuration, resources.getDisplayMetrics()); } } /** * 如果是7.0以下,我们需要调用changeAppLanguage方法, * 如果是7.0及以上系统,直接把我们想要切换的语言类型保存在SharedPreferences中,然后重新启动MainActivity即可 */ public static void setLanguage(String language,String country,Context appContext){ public static void setLanguage(String language, String country, Context appContext) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { changeAppLanguage(appContext, language,country); changeAppLanguage(appContext, language, country); } SPUtils.Companion.instance().put("language",language); SPUtils.Companion.instance().put("country",country); SPUtils.Companion.instance().put("language", language); SPUtils.Companion.instance().put("country", country); }