Android 프로 그래 밍 은 QQ 를 모방 하여 발표 하고 사진 및 팝 업 상자 효 과 를 업로드 합 니 다[데모 원본 다운로드 첨부]

이 사례 는 안 드 로 이 드 프로 그래 밍 이 QQ 를 모방 하여 발표 하고 사진 을 올 리 며 팝 업 상자 효 과 를 보 여 주 는 것 을 보 여 준다.여러분 께 참고 하도록 공유 하 겠 습 니 다.구체 적 으로 는 다음 과 같 습 니 다.
코드 는 매우 간단 합 니 다.주로 몇 개의 애니메이션 일 뿐 입 니 다.아이콘 같은 것 은 몇 개 를 찾 았 습 니 다.효과 그림:
 
애니메이션 설명:
1.오른쪽 상단 단 추 를 누 르 면 상단 에서 메뉴 가 꺼 지고 배경 이 어 두 워 집 니 다.
2.오른쪽 상단 버튼 을 다시 누 르 고 리 턴 버튼 을 누 르 거나 공백 영역(즉 어 두 워 진 부분)을 누 르 면 메뉴 를 위로 되 돌려 줍 니 다.
3.메뉴 에 있 는 단 추 를 누 르 면 이벤트 에 응답 하고 메뉴 를 회수 합 니 다(효 과 는 동일 2)
중요 설명:애니메이션 이 끝 난 후에 반드시 clearAnimation 을 사용 해 야 합 니 다.그렇지 않 으 면 숨겨 진 상태의 view 는 클릭 이벤트 에 응답 할 수 있 습 니 다.
주 코드:

public class MainActivity extends Activity {
  //      
  private ImageView addDataIv;
  //      
  private LinearLayout dropDownView;
  private View bgView;
  //             
  private boolean showItems = false;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    addDataIv = (ImageView) findViewById(R.id.main_newData);
    dropDownView = (LinearLayout) findViewById(R.id.dropDownView);
    bgView = findViewById(R.id.main_bg);
    addDataIv.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (!showItems) {
          showView();
        } else {
          dismissView();
        }
      }
    });
    //         
    bgView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (showItems) {
          dismissView();
        }
      }
    });
    //              
    View.OnClickListener l = new OnClickImpl();
    findViewById(R.id.dropDown_item1).setOnClickListener(l);
    findViewById(R.id.dropDown_item2).setOnClickListener(l);
    findViewById(R.id.dropDown_item3).setOnClickListener(l);
    findViewById(R.id.dropDown_item4).setOnClickListener(l);
  }
  //      
  private void showView() {
    showItems = true;
    addDataIv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate_open));
    dropDownView.startAnimation(AnimationUtils.loadAnimation(this, R.anim.drop_down));
    dropDownView.setVisibility(View.VISIBLE);
    bgView.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_dark));
    bgView.setVisibility(View.VISIBLE);
  }
  //      
  private void dismissView() {
    showItems = false;
    addDataIv.startAnimation(AnimationUtils.loadAnimation(MainActivity.this, R.anim.rotate_close));
    Animation dropUpAnim = AnimationUtils.loadAnimation(this, R.anim.drop_up);
    dropUpAnim.setAnimationListener(new AnimListenerImpl(dropDownView));
    dropDownView.startAnimation(dropUpAnim);
    dropDownView.setVisibility(View.INVISIBLE);
    Animation fadeLightAnim = AnimationUtils.loadAnimation(MainActivity.this, R.anim.fade_light);
    fadeLightAnim.setAnimationListener(new AnimListenerImpl(bgView));
    bgView.startAnimation(fadeLightAnim);
    bgView.setVisibility(View.INVISIBLE);
  }
  //      ,           ,    
  @Override
  public void onBackPressed() {
    if (showItems) {
      dismissView();
      return;
    }
    super.onBackPressed();
  }
  private class OnClickImpl implements View.OnClickListener {
    @Override
    public void onClick(View v) {
      if (!showItems) {
        return;
      }
      int id = v.getId();
      switch (id) {
        case R.id.dropDown_item1:
          Toast.makeText(MainActivity.this, "item1 onClick", Toast.LENGTH_SHORT).show();
          dismissView();
          break;
        case R.id.dropDown_item2:
          Toast.makeText(MainActivity.this, "item2 onClick", Toast.LENGTH_SHORT).show();
          dismissView();
          break;
        case R.id.dropDown_item3:
          Toast.makeText(MainActivity.this, "item3 onClick", Toast.LENGTH_SHORT).show();
          dismissView();
          break;
        case R.id.dropDown_item4:
          Toast.makeText(MainActivity.this, "item4 onClick", Toast.LENGTH_SHORT).show();
          dismissView();
          break;
        default:
          break;
      }
    }
  }
  //       clearAnimation,       view         
  private class AnimListenerImpl implements Animation.AnimationListener {
    private View view;
    public AnimListenerImpl(View view) {
      this.view = view;
    }
    @Override
    public void onAnimationStart(Animation animation) {
    }
    @Override
    public void onAnimationEnd(Animation animation) {
      view.clearAnimation();
    }
    @Override
    public void onAnimationRepeat(Animation animation) {
    }
  }
}

전체 인 스 턴 스 코드 는 여 기 를 클릭 하 십시오본 사이트 다운로드
더 많은 안 드 로 이 드 관련 내용 에 관심 이 있 는 독자 들 은 본 사이트 의 주 제 를 볼 수 있다.,,,,,,,
본 고 에서 말 한 것 이 여러분 의 안 드 로 이 드 프로 그래 밍 에 도움 이 되 기 를 바 랍 니 다.

좋은 웹페이지 즐겨찾기