当前位置:  编程技术>移动开发
本页文章导读:
    ▪点击button拖动成效        点击button拖动效果 这个简单的代码段可以熟悉getX(),getRawX()等方法,实现按钮的拖动效果: Java代码  package com.example;     import android.app.Activity;   import android.os.Bundle;   import android.widget.Button; .........
    ▪ Handler与Thread的差别        Handler与Thread的区别   android里面对于异步消息的处理,提供了一套Handler的实现方案。Handler有很多适宜的应用和微妙之处,使它在和Thread以及Service等一起使用的时候达到很好的效果。 一. Handl.........
    ▪ 文本颤动效果       文本抖动效果 几句代码如下: Java代码  Animation animation = AnimationUtils.loadAnimation(this, R.anim.shake);   EditText editText = (EditText) findViewById(R.id.edittext);        editText.startAnimation(animation);  Animation an.........

[1]点击button拖动成效
    来源: 互联网  发布时间: 2014-02-18
点击button拖动效果
这个简单的代码段可以熟悉getX(),getRawX()等方法,实现按钮的拖动效果:
Java代码 
package com.example;  
 
import android.app.Activity;  
import android.os.Bundle;  
import android.widget.Button;  
import android.view.MotionEvent;  
import android.view.View;  
import android.view.View.OnTouchListener;  
 
public class ButtonDrag extends Activity {  
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
        setContentView(R.layout.main);  
        final Button btn = (Button) findViewById(R.id.btn_hello);  
 
        btn.setOnTouchListener(new OnTouchListener() {  
            int[] temp = new int[] { 0, 0 };  
 
            public boolean onTouch(View v, MotionEvent event) {  
 
                int eventaction = event.getAction();  
 
                int x = (int) event.getRawX();  
                int y = (int) event.getRawY();  
 
                switch (eventaction) {  
 
                case MotionEvent.ACTION_DOWN:  
                    temp[0] = (int) event.getX();  
                    temp[1] = (int) event.getY();  
                    break;  
                case MotionEvent.ACTION_MOVE:  
                    v.layout(x - temp[0], y - temp[1], x + v.getWidth()  
                            - temp[0], y + v.getHeight() - temp[1]);  
                    // run in non_UI thread  
                    v.postInvalidate();  
                    break;  
 
                case MotionEvent.ACTION_UP:  
                    break;  
                }  
                return false;  
            }  
 
        });  
 
    }  
 

    
[2] Handler与Thread的差别
    来源: 互联网  发布时间: 2014-02-18
Handler与Thread的区别

 

android里面对于异步消息的处理,提供了一套Handler的实现方案。Handler有很多适宜的应用和微妙之处,使它在和Thread以及Service等一起使用的时候达到很好的效果。

一. Handler与Thread的区别。Handler与调用者处于同一线程,假如Handler里面做耗时的动作,调用者线程会阻塞。Android UI操作不是线程安全的,并且这些操作必须在UI线程中执行。Android提供了几种基本的可以在其他线程中处理UI操作的方案,包括Activity 的runOnUiThread(Runnable),View的post以及1.5版本的工具类AsyncTask等方案都采用了 Handler,Handler的post对线程的处理也不是真正start一个新的线程,而是直接调用了线程的run方法,这正是google煞费苦心搞一套Handler的用意。

public void onCreate(Bundle savedInstanceState) {

      super .onCreate(savedInstanceState);

      startThread();

      // sendMessage();

      SystemClock.sleep (2000);

      setContentView(R.layout.main );

   }

   public void startThread() {

      mThread.start();

   }

   public void sendMessage() {

      MHandler mHandler = new MHandler();

      Message msg = mHandler.obtainMessage();

      msg.sendToTarget();

   }

   class MHandler extends Handler {

      public MHandler() {

      }

      public MHandler(Looper l) {

        super (l);

      }

      @Override

      public void handleMessage(Message msg) {

        int count = 0;

        while (count++ < Integer.MAX_VALUE ) {

           Log.d (TAG , "Rintail");

        }

      }

   }

   Thread mThread = new Thread() {

      @Override

      public void run() {

        int count = 0;

        while (count++ < Integer.MAX_VALUE ) {

           Log.d (TAG , "Rintail");

        }

      }

   };

 二.    Handler对于Message的处理不是并发的。一个Looper 只有处理完一条Message才会读取下一条,所以消息的处理是阻塞形式的。但是假如用不同的Looper则能达到并发的目的。Service 中,onStart的执行也是阻塞的。假如一个startService在onStart执行完成之前,再次条用startService也会阻塞。假如希望能尽快的执行onStart则可以在onStart中使用handler,因为Message的send是非阻塞的。假如要是不同消息的处理也是并发的,则可以用不同的Looper实例化Handler。

 public void onStart(Intent intent, int startId) {

      super .onStart(intent, startId);

      sendMessageWithLooper();

      //sendMessage();

   }

   public void sendMessage() {

      MHandler mHandler = new MHandler();

      Message msg = mHandler.obtainMessage();

      msg.sendToTarget();

   }

   public void sendMessageWithLooper() {

      HandlerThread ht = new HandlerThread("Rintail");

      ht.start();

      MHandler mHandler = new MHandler(ht.getLooper());

      Message msg = mHandler.obtainMessage();

      msg.sendToTarget();

   }

   class MHandler extends Handler {

      public MHandler() {

      }

      public MHandler(Looper l) {

        super (l);

      }

      @Override

      public void handleMessage(Message msg) {

        Log.d (TAG , "first");

        while (true ) {

           if (false )

              break ;

        }

        Log.d (TAG , "second");

      }

   };

   class MyThread extends Thread {

      @Override

      public void run() {

        Log.d (TAG , "first");

        while (true ) {

           if (false )

              break ;

        }

        Log.d (TAG , "second");

      }

   };
 三.  资源回收

向Handler对象发送类似new Message ()形式的空Message可以达到清空Message的目的,这种做法与getLooper().quit()的做法是一样的。假如利用的资源较多,应及时清理。

 


    
[3] 文本颤动效果
    来源: 互联网  发布时间: 2014-02-18
文本抖动效果
几句代码如下:
Java代码 
Animation animation = AnimationUtils.loadAnimation(this, R.anim.shake);  
EditText editText = (EditText) findViewById(R.id.edittext);  
     editText.startAnimation(animation); 

Animation animation = AnimationUtils.loadAnimation(this, R.anim.shake);
EditText editText = (EditText) findViewById(R.id.edittext);
editText.startAnimation(animation);


shake.xml:
里面面的fromXDelta,toXDelta是表示x轴方向的移动距离
Java代码 
<translate xmlns:android="http://schemas.android.com/apk/res/android" 
    android:fromXDelta="0" android:toXDelta="30" android:duration="1000" 
    android:interpolator="@anim/cycle_interpolator" /> 

<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromXDelta="0" android:toXDelta="30" android:duration="1000"
android:interpolator="@anim/cycle_interpolator" />


cycleInterpolator.xml文件:
Java代码 
<cycleInterpolator xmlns:android="http://schemas.android.com/apk/res/android" 
    android:cycles="3" /> 

    
最新技术文章:
▪Android开发之登录验证实例教程
▪Android开发之注册登录方法示例
▪Android获取手机SIM卡运营商信息的方法
▪Android实现将已发送的短信写入短信数据库的...
▪Android发送短信功能代码
▪Android根据电话号码获得联系人头像实例代码
▪Android中GPS定位的用法实例
▪Android实现退出时关闭所有Activity的方法
▪Android实现文件的分割和组装
▪Android录音应用实例教程
▪Android双击返回键退出程序的实现方法
▪Android实现侦听电池状态显示、电量及充电动...
▪Android获取当前已连接的wifi信号强度的方法
▪Android实现动态显示或隐藏密码输入框的内容
▪根据USER-AGENT判断手机类型并跳转到相应的app...
▪Android Touch事件分发过程详解
▪Android中实现为TextView添加多个可点击的文本
▪Android程序设计之AIDL实例详解
▪Android显式启动与隐式启动Activity的区别介绍
▪Android按钮单击事件的四种常用写法总结
▪Android消息处理机制Looper和Handler详解
▪Android实现Back功能代码片段总结
▪Android实用的代码片段 常用代码总结
▪Android实现弹出键盘的方法
▪Android中通过view方式获取当前Activity的屏幕截...
▪Android提高之自定义Menu(TabMenu)实现方法
▪Android提高之多方向抽屉实现方法
▪Android提高之MediaPlayer播放网络音频的实现方法...
▪Android提高之MediaPlayer播放网络视频的实现方法...
▪Android提高之手游转电视游戏的模拟操控
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3