广告
返回顶部
首页 > 资讯 > 移动开发 >Android编程实现仿QQ发表说说,上传照片及弹出框效果【附demo源码下载】
  • 480
分享到

Android编程实现仿QQ发表说说,上传照片及弹出框效果【附demo源码下载】

demo传照片Android 2022-06-06 04:06:51 480人浏览 泡泡鱼
摘要

本文实例讲述了Android编程实现仿QQ发表说说,上传照片及弹出框效果。分享给大家供大家参考,具体如下: 代码很简单,主要就是几个动画而已,图标什么的就随便找了几个,效果图:

本文实例讲述了Android编程实现仿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) {
    }
  }
}

完整实例代码点击此处本站下载

更多关于Android相关内容感兴趣的读者可查看本站专题:《Android开发动画技巧汇总》、《Android编程之activity操作技巧总结》、《Android视图View技巧总结》、《Android布局layout技巧总结》、《Android开发入门与进阶教程》、《Android资源操作技巧汇总》及《Android控件用法总结》

希望本文所述对大家Android程序设计有所帮助。

您可能感兴趣的文章:Android 多种简单的弹出框样式设置代码Android实现可输入数据的弹出框Android使用Dialog风格弹出框的ActivityReact-native 封装选择弹出框示例(试用iOS&android)Android中自定义PopupWindow实现弹出框并带有动画效果Android 仿微信朋友圈点赞和评论弹出框功能高仿IOS的Android弹出框Android仿微信进度弹出框的实现方法Android自定义弹出框dialog效果Android自定义底部弹出框ButtomDialog


--结束END--

本文标题: Android编程实现仿QQ发表说说,上传照片及弹出框效果【附demo源码下载】

本文链接: https://www.lsjlt.com/news/22577.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作