我刚刚使用Google Map API构建了我的Android应用,并设法让它运行我所期望的。但我仍然有一些问题需要改进我的用户界面。
问题1:
每当用户手动移动地图时(我通过在屏幕上滑动/点击),我想隐藏软键盘。我有一个工作隐藏软键盘功能,我只想在用户移动屏幕时调用它。
问题2:
我正在使用自定义“飞行”回到当前位置,但它很难看。我希望有类似默认谷歌的“飞行”按钮,它实际上有“飞”回“当前位置而不是传送回”。或者我可以将默认图标移到右下角。
这是我的代码的一部分:
private void hideSoftKeyboard(){
this.getWindow().setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
}
“飞行”按钮:
private void getDeviceLocation(){
Log.d(TAG, "getDeviceLocation: getting the devices current location");
mFusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(this);
try{
if(mLocationPermissionsGranted){
final Task location = mFusedLocationProviderClient.getLastLocation();
location.addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(@NonNull Task task) {
if(task.isSuccessful()){
Log.d(TAG, "onComplete: found location!");
Location currentLocation = (Location) task.getResult();
moveCamera(new LatLng(currentLocation.getLatitude(), currentLocation.getLongitude()),
DEFAULT_ZOOM,
"My Location");
}else{
Log.d(TAG, "onComplete: current location is null");
Toast.makeText(MapActivity.this, "unable to get current location", Toast.LENGTH_SHORT).show();
}
}
});
}
}catch (SecurityException e){
Log.e(TAG, "getDeviceLocation: SecurityException: " + e.getMessage() );
}
}
mGps.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.d(TAG, "onClick: clicked gps icon");
getDeviceLocation();
}
});
答案 0 :(得分:0)
问题1:有一个名为 OnCamerMoveListener 的监听器,您可以使用它来了解地图移动和隐藏键盘的时间。
问题2:您可以使用 animateCamera 方法代替 moveCamera 进行平滑过渡。