지도를 한 번에 뒤집어서 다른보기에서 구성한 다음 다시지도에 뒤집어서 Android MapActivity를 만들려했습니다. 해결책을 찾았지만이 작업을 수행 할 수있는 더 좋은 방법이 있는지 궁금합니다. Android ViewFlipper에서 Rotate3dAnimation의 구현 개선
나는 안드로이드 ApiDemos에에서 Rotate3DAnimation 클래스를 복사, 내 MapActivity 클래스의 상단에있는 다음을 선언private MapView mMapView;
private ViewFlipper mFlipper;
private Rotate3dAnimation mInMapAnimation;
private Rotate3dAnimation mInStgAnimation;
private Rotate3dAnimation mOutMapAnimation;
private Rotate3dAnimation mOutStgAnimation;
다음, MapActivity 내에서 onCreate 방법에 내가 한이 :
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapoverviewlayout);
// Initialize the map.
MapView mapView = (MapView) findViewById(R.id.mapview);
mapView.setBuiltInZoomControls(true);
// Obtain the view flipper.
mFlipper = (ViewFlipper)findViewById(R.id.mapviewflipper);
// Initialize the settings view and handle the setting clicks.
Button stgMapDone = (Button)findViewById(R.id.MapViewOptionsDone);
stgMapDone.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
UnitOverviewMapActivity.this.mFlipper.showNext();
}
});
}
마지막으로, 적절한 플립 애니메이션을 선택하기 위해 메뉴 버튼을 사용했습니다. 지도가 설정보기를 나타 내기 위해 한 방향으로 뒤집 으면 설정보기를 숨기려면 반대 방향으로 뒤집기를 원했기 때문에 제가했습니다. 내가 이런 짓을 (내 버튼이 어디에 그 이후) 내 onPrepareOptionsMenu에 따라서 :
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
if (mInMapAnimation == null) {
mInMapAnimation = new Rotate3dAnimation(-90, 0, mMapView.getWidth()/2, mMapView.getHeight()/2, 0.0f, false);
mInMapAnimation.setDuration(1000);
mInMapAnimation.setStartOffset(1000);
}
if (mInStgAnimation == null) {
mInStgAnimation = new Rotate3dAnimation(90, 0, mMapView.getWidth()/2, mMapView.getHeight()/2, 0.0f, false);
mInStgAnimation.setDuration(1000);
mInStgAnimation.setStartOffset(1000);
}
if (mOutMapAnimation == null) {
mOutMapAnimation = new Rotate3dAnimation(0, -90, mMapView.getWidth()/2, mMapView.getHeight()/2, 0.0f, false);
mOutMapAnimation.setDuration(1000);
}
if (mOutStgAnimation == null) {
mOutStgAnimation = new Rotate3dAnimation(0, 90, mMapView.getWidth()/2, mMapView.getHeight()/2, 0.0f, false);
mOutStgAnimation.setDuration(1000);
}
if (mFlipper.getCurrentView().getId() == R.id.mapparentlayout) {
mFlipper.setInAnimation(mInStgAnimation);
mFlipper.setOutAnimation(mOutMapAnimation);
}
else {
mFlipper.setInAnimation(mInMapAnimation);
mFlipper.setOutAnimation(mOutStgAnimation);
}
return true;
}
이 잘 작동하지만 그냥 비효율적 인 것 같다. 나는 (분명히 실수로) "뒤집기"가 ViewFlipper 컨테이너의 내장 기능이라고 가정했다. 이 작업을 수행하는 데 더 효과적인 방법이 있습니까?