zoukankan      html  css  js  c++  java
  • 实现手机QQ的抖动效果

    其实实现这个效果很简单,只是为这个根布局加了一个动画;

    即:

    1:为根布局设置一个id;

    2:activity 实例化布局中的id,并绑定动画;

    3:设置震动效果,最好震动的时长和抖动的时长同步起来。

    下面来看一看代码:

    1:xml文件:

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:id="@+id/lin"
        tools:context="com.example.zz.DouYiDouActivity" >
    
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
        
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            />
        <ImageView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:src="@drawable/ic_launcher"
            />
        
            <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="@string/hello_world" />
            
            <Button
             android:id="@+id/btn"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="开始抖抖" 
            />
    
    </LinearLayout>

    2:activity

        
        private LinearLayout layout;
        private Button button;
        private Vibrator vibrator;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_dou_yi_dou);
            
            layout = (LinearLayout) findViewById(R.id.lin);
            button = (Button) findViewById(R.id.btn);
            button.setOnClickListener(new OnClickListener() {
                
                @Override
                public void onClick(View v) {            
                    Animation utils = AnimationUtils.loadAnimation(getApplicationContext(),
                            R.anim.dou);
                    utils.setAnimationListener(new AnimationListener() {
                        
                        @Override
                        public void onAnimationStart(Animation animation) {        
                            
                        }
                        
                        @Override
                        public void onAnimationRepeat(Animation animation) {        
                            
                        }
                        
                        @Override
                        public void onAnimationEnd(Animation animation) {
                            
                            vibrator.cancel();//动画结束时,停止震动
                        }
                    });
                    layout.startAnimation(utils);
                  
                    vibrator = (Vibrator) getSystemService(Context.VIBRATOR_SERVICE);
                    long [] pattern = {100,800,100};   // 震动开始等待的时间 震动的时长 停止 时间   
                   vibrator.vibrate(pattern,2);           //重复两次上面的pattern 如果只想震动一次,index设为-1   
                  
                }
            });
            
        }
  • 相关阅读:
    接口的故事
    Bash CookBook(一)--基础
    Spring学习笔记(四)--MVC概述
    Spring学习笔记(三)--Convert System设计
    java web框架发展的新趋势--跨界轻型App
    由Strurts2漏洞引开谈谈web代码安全问题
    Java线程同步之一--AQS
    Android Studio 0.4 + PhoneGap 3.3 开发环境的搭建
    redis的多线程
    原电商设计框架
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4722884.html
Copyright © 2011-2022 走看看