欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android編程實(shí)現(xiàn)仿QQ發(fā)表說說,上傳照片及彈出框效果【附demo源碼下載】

 更新時(shí)間:2017年01月21日 14:20:05   作者:books1958  
這篇文章主要介紹了Android編程實(shí)現(xiàn)仿QQ發(fā)表說說,上傳照片及彈出框效果,涉及Android動(dòng)畫特效的相關(guān)實(shí)現(xiàn)技巧,并附帶demo源碼供讀者下載參考,需要的朋友可以參考下

本文實(shí)例講述了Android編程實(shí)現(xiàn)仿QQ發(fā)表說說,上傳照片及彈出框效果。分享給大家供大家參考,具體如下:

代碼很簡單,主要就是幾個(gè)動(dòng)畫而已,圖標(biāo)什么的就隨便找了幾個(gè),效果圖:

 

動(dòng)畫說明:

1.點(diǎn)擊右上角按鈕,菜單從頂部下拉彈出,同時(shí)背景變暗;
2.再次點(diǎn)擊右上角按鈕,點(diǎn)擊返回鍵,或者點(diǎn)擊空白區(qū)域(也就是變暗的部分),菜單向上收回;
3.點(diǎn)擊菜單上的按鈕響應(yīng)事件,同時(shí)菜單收回(效果同2)

重要說明:動(dòng)畫結(jié)束后必須clearAnimation,否則隱藏狀態(tài)的view依然能響應(yīng)點(diǎn)擊事件

主體代碼:

public class MainActivity extends Activity {
  //添加數(shù)據(jù)按鈕
  private ImageView addDataIv;
  //下拉功能菜單
  private LinearLayout dropDownView;
  private View bgView;
  //當(dāng)前下拉菜單是否為顯示狀態(tài)
  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();
        }
      }
    });
    //點(diǎn)擊空白隱藏彈出框
    bgView.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View v) {
        if (showItems) {
          dismissView();
        }
      }
    });
    //下拉功能菜單上按鈕的點(diǎn)擊事件
    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);
  }
  //點(diǎn)擊返回鍵時(shí),如果下拉菜單是顯示狀態(tài),則隱藏它
  @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;
      }
    }
  }
  //動(dòng)畫結(jié)束后必須clearAnimation,否則隱藏狀態(tài)的view依然能響應(yīng)點(diǎn)擊事件
  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) {
    }
  }
}

完整實(shí)例代碼點(diǎn)擊此處本站下載。

更多關(guān)于Android相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Android開發(fā)動(dòng)畫技巧匯總》、《Android編程之a(chǎn)ctivity操作技巧總結(jié)》、《Android視圖View技巧總結(jié)》、《Android布局layout技巧總結(jié)》、《Android開發(fā)入門與進(jìn)階教程》、《Android資源操作技巧匯總》及《Android控件用法總結(jié)

希望本文所述對(duì)大家Android程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 解析android res 運(yùn)行錯(cuò)誤的問題

    解析android res 運(yùn)行錯(cuò)誤的問題

    本篇文章是對(duì)android中res運(yùn)行錯(cuò)誤的問題進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • Android ViewDragHelper仿淘寶拖動(dòng)加載效果

    Android ViewDragHelper仿淘寶拖動(dòng)加載效果

    這篇文章主要為大家詳細(xì)介紹了Android ViewDragHelper仿淘寶拖動(dòng)加載效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • 上傳Android項(xiàng)目至github的解析

    上傳Android項(xiàng)目至github的解析

    本文主要講解了如何將自己的android項(xiàng)目上傳至github,相信大家平時(shí)在開發(fā)過程中為了避免重復(fù)造輪子會(huì)經(jīng)常逛一下github查看有沒有與需求類似的開源項(xiàng)目,那么github上面的開源項(xiàng)目是如何上傳至github上的呢?
    2018-05-05
  • 淺談Android View滑動(dòng)沖突的解決方法

    淺談Android View滑動(dòng)沖突的解決方法

    本篇文章主要介紹了淺談Android View滑動(dòng)沖突的解決方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • 老生常談ProgressBar、ProgessDialog的用法

    老生常談ProgressBar、ProgessDialog的用法

    下面小編就為大家?guī)硪黄仙U凱rogressBar、ProgessDialog的用法。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-07-07
  • Android系列---JSON數(shù)據(jù)解析的實(shí)例

    Android系列---JSON數(shù)據(jù)解析的實(shí)例

    JSON(JavaScript Object Notation)和XML,并稱為客戶端和服務(wù)端交互解決方案的倚天劍和屠龍刀,這篇文章主要介紹了Android系列---JSON數(shù)據(jù)解析的實(shí)例,有興趣的可以了解一下。
    2016-11-11
  • Android ListView之EfficientAdapte的使用詳解

    Android ListView之EfficientAdapte的使用詳解

    這篇文章主要介紹了Android ListView之EfficientAdapte的使用詳解的相關(guān)資料,這里介紹EfficientAdapter 的使用方法,需要的朋友可以參考下
    2017-08-08
  • Java4Android開發(fā)教程(二)hello world!

    Java4Android開發(fā)教程(二)hello world!

    一般的開發(fā)教程都是介紹完安裝配置開發(fā)環(huán)境,緊接著來一篇hello world,算是國際慣例吧,我們當(dāng)然也不能免俗,哈哈,各位看官請(qǐng)看好了!
    2014-10-10
  • android RadioButton和CheckBox組件的使用方法

    android RadioButton和CheckBox組件的使用方法

    本次實(shí)驗(yàn)中主要是學(xué)習(xí)如何使用RadioGroup,CheckBox,RadioButton和Toast這幾個(gè)控件,android UI開發(fā)中也會(huì)經(jīng)常用到他們
    2013-11-11
  • Android編程基于自定義控件實(shí)現(xiàn)時(shí)鐘功能的方法

    Android編程基于自定義控件實(shí)現(xiàn)時(shí)鐘功能的方法

    這篇文章主要介紹了Android編程基于自定義控件實(shí)現(xiàn)時(shí)鐘功能的方法,結(jié)合實(shí)例形式詳細(xì)分析了Android自定義控件的定義及時(shí)鐘功能相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2018-03-03

最新評(píng)論