Android漂浮动态效果的简单实现

漂浮动态效果的简单实现,本测试,是从手机左边向右慢慢飘过,数量,速度都可以设置,为了有气氛,添加的音乐播放。

直接看代码

布局一个如下:

<RelativeLayout 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"
   
    tools:context=".MainActivity" >

    <FrameLayout           
        android:id="@+id/testlayout"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/bg"
        android:gravity="center"
        android:orientation="vertical" >
    </FrameLayout>

</RelativeLayout>

FloatCloudView.java类:

package com.example.tesstanything;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.os.Handler;
import android.view.View;
import android.view.ViewGroup.LayoutParams;

public class FloatCloudyView extends View implements Runnable {

	private Bitmap bitmap;
	private int left;
	private int top;
	private int dx = 1;
	private int sleepTime;
	public static boolean IsRunning = true;
	private Handler handler;
	public FloatCloudyView(Context context, int resource, int left,int top,
			 int sleepTime) {
		super(context);

		this.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT,
				LayoutParams.MATCH_PARENT));
		bitmap = BitmapFactory.decodeResource(getResources(), resource);
		this.left = left;
		this.top = top;
		this.sleepTime = sleepTime;

		handler = new Handler() {
			public void handleMessage(android.os.Message msg) {
				FloatCloudyView.this.invalidate();
			};
		};
	}

	public void move() {
		new Thread(this).start();
	}

	@Override
	protected void onDraw(Canvas canvas) {
		super.onDraw(canvas);
		canvas.drawBitmap(bitmap, left, top, null);
	}

	@Override
	public void run() {

		while (FloatCloudyView.IsRunning) {
				if ((bitmap != null) && (left > (getWidth()))) {
					left = -bitmap.getWidth();
				}
			left = left + dx;
			handler.sendMessage(handler.obtainMessage());
			try {
				Thread.sleep(sleepTime);
			} catch (InterruptedException e) {
				e.printStackTrace();
			}
		}
	}
}
package com.example.tesstanything;
import android.app.Activity;
import android.content.Context;
import android.media.MediaPlayer;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.Window;
import android.widget.Button;
import android.widget.FrameLayout;
public class MainActivity extends Activity {
	private FrameLayout fl;
	private MediaPlayer mediaPlayer;
	private int place=0;
	private Button bt;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		setContentView(R.layout.activity_main);
		fl=(FrameLayout)findViewById(R.id.testlayout);
		floatCloud();
	
	}

	private void floatCloud() {
		// TODO Auto-generated method stub
		//获取WindowManager
		WindowManager wManager = (WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
		int width = wManager.getDefaultDisplay().getWidth();
		int height = wManager.getDefaultDisplay().getHeight();

		//获取FrameLayout的高度
		fl.getLayoutParams().height = height;
		FloatCloudyView.IsRunning = true;
		FloatCloudyView view1 = new FloatCloudyView(this, R.drawable.test1,
				-width/2,0, 15);
		FloatCloudyView view2 = new FloatCloudyView(this, R.drawable.test2,
				width/3, height/2,18);
		
		fl.addView(view1, 0);
		fl.addView(view2, 0);
		//窗口添加
		view1.move();
		view2.move();
		 mediaPlayer=MediaPlayer.create(this, R.raw.music);
		 mediaPlayer.start();
	}

	@Override
	protected void onPause() {
		// TODO Auto-generated method stub
		super.onPause();
		if(mediaPlayer.isPlaying()){
			mediaPlayer.pause();
			place = mediaPlayer.getCurrentPosition();
			
		}
	}
	
	@Override
	protected void onResume() {
		// TODO Auto-generated method stub
		super.onResume();
		if(place!=0){
			mediaPlayer.seekTo(place);
			mediaPlayer.start();
		}
		
	}
	@Override
	protected void onDestroy() {
		// TODO Auto-generated method stub
		super.onDestroy();
		if(mediaPlayer!=null){
			mediaPlayer.release();
			mediaPlayer=null;
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.main, menu);
		return true;
	}

}


下载源码

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值