Android(安卓)实现 按钮从两边移到中间动画效果
16lz
2021-12-04
Android 实现 按钮从两边移到中间动画效果
http://blog.csdn.net/aminfo/article/details/7589149
package org.shuxiang.test;import android.app.Activity;import android.os.Bundle;import android.os.Handler;import android.os.Looper;import android.os.Message;import android.util.DisplayMetrics;import android.util.Log;import android.view.Gravity;import android.widget.Button;import android.widget.LinearLayout;import android.widget.LinearLayout.LayoutParams;public class MainActivity extends Activity{private DisplayMetrics dm;private LinearLayout layout, layoutLeft, layoutCenter, layoutRight;private static Handler messageHandler; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); layout = new LinearLayout(this); layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT)); layout.setOrientation(0); //水平 layout.setGravity(Gravity.CENTER); layoutLeft = new LinearLayout(this); layoutLeft.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT)); layoutLeft.setGravity(Gravity.RIGHT); layoutCenter = new LinearLayout(this); layoutCenter.setLayoutParams(new LayoutParams(dm.widthPixels, LayoutParams.WRAP_CONTENT)); layoutRight = new LinearLayout(this); layoutRight.setLayoutParams(new LayoutParams(0, LayoutParams.WRAP_CONTENT)); layoutRight.setGravity(Gravity.LEFT); Button btA = new Button(this); btA.setText("按钮A"); btA.setSingleLine(true); Button btB = new Button(this); btB.setText("按钮B"); btB.setSingleLine(true); layoutLeft.addView(btA); layoutRight.addView(btB); layout.addView(layoutLeft); layout.addView(layoutCenter); layout.addView(layoutRight); setContentView(layout); Looper looper = Looper.myLooper(); messageHandler = new MessageHandler(looper); new Thread(new Runnable() {@Overridepublic void run(){int speed = 5;//每次移动间隔毫秒,数字越大越慢int speedPx = 1;//每次移动间隔像素,数字越大越快int loopCount = dm.widthPixels/2;int i=1;while(i < loopCount){Message message = Message.obtain();message.what = 1;message.arg1 = i; messageHandler.sendMessage(message); i = i + speedPx; synchronized(this){ try {wait(speed);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}i=0;while(i < 10){Message message = Message.obtain();message.what = 1;message.arg1 = loopCount - i; messageHandler.sendMessage(message); i = i + speedPx; synchronized(this){ try {wait(speed);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}}}} }).start(); } class MessageHandler extends Handler { public MessageHandler(Looper looper) { super(looper); } @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: layoutLeft.setLayoutParams(new LayoutParams(msg.arg1, LayoutParams.WRAP_CONTENT)); layoutRight.setLayoutParams(new LayoutParams(msg.arg1, LayoutParams.WRAP_CONTENT)); layoutCenter.setLayoutParams(new LayoutParams(dm.widthPixels - msg.arg1 * 2, LayoutParams.WRAP_CONTENT)); break; } } }}
转载请标明:http://blog.csdn.net/aminfo/article/details/7589149
更多相关文章
- android 多项对话框
- Android(安卓)VR效果GoogleVR
- Android(安卓)ListView(Selector 背景图片 全选 Checkbox等按钮)
- Android控件之ImageView,Button, ImageButton
- Android开发小技巧1
- 14 Android(安卓)android 按钮效果的两种实现方法
- android 五种布局模式
- android 利用service来播放音乐
- Android往SD卡上存储文件