zoukankan      html  css  js  c++  java
  • 简易模仿手机拨号盘浮在ListView之上并且展开,折叠效果

    2013-12-24 16:56:45

    有时候可以看到很多手机会将Call log list和Dailer放在同一个页面中,同时Dialer是可以折叠、打开的,自己做了一个Demo,能实现这种效果,简易版的,就当做个笔记吧。

    里面用到了简单的动画,不过布局稍显特殊。

    废话不多说,直接上代码:

     1 public class TestActivity extends Activity implements
     2         Animation.AnimationListener {
     3 
     4     private ListView mListView;
     5 
     6     private Animation mDialpadOutAnim;
     7     private Animation mDialpadInAnim;
     8     private View mDialpad;
     9     private View mTwelveKey;
    10     private boolean mClosed;
    11 
    12     private String[] list;
    13 
    14     @Override
    15     protected void onCreate(Bundle savedInstanceState) {
    16         super.onCreate(savedInstanceState);
    17         setContentView(R.layout.activity_test);
    18         mDialpad = findViewById(R.id.dialpad_container);
    19         mListView = (ListView) findViewById(android.R.id.list);
    20         initListView();
    21     }
    22 
    23     private void initListView() {
    24         int i = 0;
    25         list = new String[10];
    26         StringBuilder sb = new StringBuilder("Test");
    27         do {
    28             list[i] = (sb.append(i + "").toString());
    29             i++;
    30         } while (i < 10);
    31         ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
    32                 android.R.layout.simple_list_item_1, list);
    33         mListView.setAdapter(adapter);
    34     }
    35 
    36     public void onClick(View v) {
    37         if (mClosed) {
    38             maximizeDialpad();
    39             // mListView.setVisibility(View.GONE);
    40         } else {
    41             minimizeDialpad();
    42         }
    43     }
    44 
    45     private void minimizeDialpad() {
    46         mTwelveKey = findViewById(R.id.twelve_key_dialer_layout);
    47         mDialpadOutAnim = AnimationUtils
    48                 .loadAnimation(this, R.anim.dialpad_out);
    49         mDialpadOutAnim.setAnimationListener(this);
    50         mTwelveKey.startAnimation(this.mDialpadOutAnim);
    51         mClosed = true;
    52     }
    53 
    54     private void maximizeDialpad() {
    55         mTwelveKey = findViewById(R.id.twelve_key_dialer_layout);
    56         mDialpadInAnim = AnimationUtils.loadAnimation(this, R.anim.dialpad_in);
    57         mDialpadInAnim.setAnimationListener(this);
    58         mTwelveKey.startAnimation(this.mDialpadInAnim);
    59         mDialpad.setVisibility(View.VISIBLE);
    60         mClosed = false;
    61     }
    62 
    63     @Override
    64     public void onAnimationStart(Animation animation) {
    65 
    66     }
    67 
    68     @Override
    69     public void onAnimationEnd(Animation animation) {
    70         if (mClosed) {
    71             mDialpad.setVisibility(View.GONE);
    72         }
    73     }
    74 
    75     @Override
    76     public void onAnimationRepeat(Animation animation) {
    77 
    78     }
    79 }

    其他的布局、资源文件就不贴出来了,有兴趣的直接下载Demo源码吧。

    Demo源码,猛戳这里

  • 相关阅读:
    [dubbo实战] dubbo+zookeeper伪集群搭建
    Spring中使用Map、Set、List、数组、属性集合的注入方法配置文件
    Docker实践
    docke镜像上传到dockerhub仓库和阿里云docker仓库的方法
    Linux chmod命令详解
    使用nexus搭建maven私服
    Zookeeper注册节点的掉线自动重新注册及测试方法
    Dubbo负载均衡策略
    各种排序算法及其java程序实现
    java中的各种数据类型在内存中存储的方式
  • 原文地址:https://www.cnblogs.com/wlrhnh/p/3489402.html
Copyright © 2011-2022 走看看