现在的位置: 首页 > 综合 > 正文

Android 实现旋转键盘的例子

2013年08月17日 ⁄ 综合 ⁄ 共 18891字 ⁄ 字号 评论关闭


效果图



单个图片的类

DJItemImageView.java

package com.ldci.djrotatemenuforandroid;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;


public class DJItemImageView extends RelativeLayout implements OnClickListener{

	public ImageView imageView;
	
	public DJItemImageView(Context context) {
		super(context);
		//this.setBackgroundColor(Color.GREEN);

		
		
		//设置该布局的属性
		RelativeLayout.LayoutParams lp1 = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
		lp1.addRule(RelativeLayout.CENTER_HORIZONTAL);
		lp1.addRule(RelativeLayout.CENTER_VERTICAL);
	
		
		
		// TODO Auto-generated constructor stub
		imageView = new ImageView(context);
		imageView.setRotation(180);
		
		
		Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ui_navi_course_in)).getBitmap();
		
		//设置图片的属性
		RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(bitmap.getWidth(), bitmap.getHeight());
		//RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		
	
		lp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
		
		lp.addRule(RelativeLayout.CENTER_VERTICAL);
		
		
		imageView.setLayoutParams(lp);
		
		//imageView.setImageBitmap(bitmap);
		
		imageView.setOnClickListener(this);
		

		this.addView(imageView);
		
	//	lp1.width = bitmap.getWidth() * 3;
	//	lp1.height = bitmap.getHeight();
		this.setLayoutParams(lp1);


		
	}

	
	
	
	public void setImageTag(int tagId) {
		imageView.setId(tagId);
		Log.i("image", "imageItem tag" + tagId);
	}
	
	
	
	
	
	public void djsetImageResources(int imageId) {
		Bitmap bitmap = ((BitmapDrawable)getResources().getDrawable(imageId)).getBitmap();
		imageView.setImageBitmap(bitmap);
		
	}
	
	
	
	
	
	@Override
	public void onClick(View v) {
		
		Log.i("image", "1111111111111111111111111111" + v.getId());
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case 1001:
			Log.i("image", "1111111111111111111111111111");
			break;

		case 1002:
			Log.i("image", "222222222222222222222222222222");
			break;
		case 1003:
			Log.i("image", "33333333333333333333333333333");
			break;
			
		case 1004:
			Log.i("image", "444444444444444444444444444");
			break;
			
		case 1005:
			Log.i("image", "5555555555555555555555555555");
			break;
			
		case 1006:
			Log.i("image", "66666666666666666666666666");
			break;
			
		case 10000:
			Log.i("image", "777777777777777777777");
			break;
			
			
			
		default:
			break;
		}
		
	}
	

}

6个图片的第一次集合类

DJRotateRelativeLayout.java

package com.ldci.djrotatemenuforandroid;

import java.util.ArrayList;

import android.R.integer;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.drawable.BitmapDrawable;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;

public class DJRotateRelativeLayout extends RelativeLayout{

	private int imageIdsDefault[] = {R.drawable.ui_navi_home,R.drawable.ui_navi_feature,R.drawable.ui_navi_course,R.drawable.ui_navi_listen,R.drawable.ui_navi_play,R.drawable.ui_navi_more};
	
	
	
	private int imageIdsIn[] = {R.drawable.ui_navi_home_in,R.drawable.ui_navi_feature_in,R.drawable.ui_navi_course_in,R.drawable.ui_navi_listen_in,R.drawable.ui_navi_play_in,R.drawable.ui_navi_more_in};
	
	private ArrayList<DJItemImageView> djArrayList;
	
	

	
	
	public DJRotateRelativeLayout(Context context) {
		super(context);
		// TODO Auto-generated constructor stub
		//初始化一个数字
		djArrayList = new ArrayList<DJItemImageView>();
		

		
		
		this.setBackgroundColor(Color.TRANSPARENT);
		
RelativeLayout.LayoutParams bglp = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
		
		bglp.addRule(RelativeLayout.CENTER_HORIZONTAL);
		bglp.addRule(RelativeLayout.CENTER_VERTICAL);
		this.setLayoutParams(bglp);
		//this.setOnTouchListener(this);
		
		ImageView bgImageViewimageView = new ImageView(context);
		bgImageViewimageView.setLayoutParams(bglp);
		
		
		Bitmap bgbitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ui_navi_bg)).getBitmap();
		bgImageViewimageView.setImageBitmap(bgbitmap);
		this.addView(bgImageViewimageView);
		
		
		
		
		RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
	//	lp.addRule(CENTER_VERTICAL);
		
		this.setLayoutParams(lp);

		
		for (int i = 1; i < 7; i++) {
			
			DJItemImageView djItemImageView = new DJItemImageView(context);
			djItemImageView.setRotation(240- (60 * i));
			djArrayList.add(djItemImageView);
			
			int tagItem = i + 1000;
			djItemImageView.setImageTag(tagItem);
			
			djItemImageView.djsetImageResources(imageIdsDefault[i - 1]);
			
			
			
			System.out.println(tagItem);
			
			
			this.addView(djItemImageView);
		}
		
		
		
		
		
		
		
		
		
		
		
		
		
	}
	
	public void changeImageDefaultResources(int imageId) {
		
		DJItemImageView inDjItemImageView = djArrayList.get(imageId);
		inDjItemImageView.djsetImageResources(imageIdsDefault[imageId]);
	}
	

	
	public void  changeImageResoures(int imageId) {
		System.out.println(imageId);
		DJItemImageView inDjItemImageView = djArrayList.get(imageId);
		inDjItemImageView.djsetImageResources(imageIdsIn[imageId]);

	}
	
	
	
	
	
}

处理旋转功能的类

DJRotateMenuView.java

package com.ldci.djrotatemenuforandroid;




import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Color;
import android.graphics.PointF;
import android.graphics.drawable.BitmapDrawable;
import android.widget.AbsoluteLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.RotateAnimation;

public class DJRotateMenuView extends RelativeLayout implements AnimationListener,OnClickListener{
	
	
	//角度
	private double angle;
	//旋转角度
	private double rotate;
	//现在的角度
	private double nowDegress;
 	private double  previousDegress;
	//计算角度变化的数据
	private double degressNum;
	//按钮间的夹角
	private double djDegressBtn;
	//当前的角度
	private double currentDegree;
	
	//屏幕的宽
	private float winSizeWidth;
	//高
	private float winSizeHeight;
	
	private boolean selectBoolean;
	
	//上一次触摸点的坐标
	private PointF previousPointF;
	
	//目标位置
	private float destinationAngle;
	
	private int previousimageId;
	
	private int currentImageId = 0;
	
	private int previousImageNum = 90;
	
	//private ImageView btnImageView;

	//private TranslateAnimation translateAnimation;
	
	//private RotateAnimation rotateAnimation;
	
	
	
// private	boolean calBool = true;
	//中心的点坐标  。。。。。临时 设置的屏幕中心
	PointF centerPointF;
	//当前计算机1秒钟的计算能力
	int myComputerCalculate = 0;
	
	private DJRotateRelativeLayout djRotateRelativeLayout;
	
	
	public DJRotateMenuView(Context context,float tempWidth,float tempHeight) {
		super(context);
	//	this.setBackgroundColor(Color.BLUE);
		this.winSizeWidth = tempWidth;
		this.winSizeHeight = tempHeight;
		this.centerPointF = new PointF(this.winSizeWidth / 2, this.winSizeHeight / 2);
		
		previousimageId = 0;
		djDegressBtn = 360 / 6;

		
//		AbsoluteLayout.LayoutParams new_params = new AbsoluteLayout.LayoutParams((int)this.winSizeWidth, (int)this.winSizeHeight, (int)this.winSizeWidth, (int)this.winSizeHeight / 2);
		
		djRotateRelativeLayout  = new DJRotateRelativeLayout(context);
//		djRotateRelativeLayout.setLayoutParams(new_params);
		
		this.addView(djRotateRelativeLayout);
	//	djRotateRelativeLayout.setRotation(120);
		
		
		
		
		//设置图片
		djRotateRelativeLayout.changeImageResoures((int)(djRotateRelativeLayout.getRotation() / djDegressBtn));
		
		degressNum = 0;
		
		
//		btnImageView = new ImageView(context);
//		btnImageView.setId(987654);
//		btnImageView.setOnClickListener(this);
//		
//		Bitmap btnBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ui_navi_triangle)).getBitmap();
//		RelativeLayout.LayoutParams btnlp = new RelativeLayout.LayoutParams(btnBitmap.getWidth(),btnBitmap.getHeight());
//		btnImageView.setImageBitmap(btnBitmap);
//		btnlp.addRule(RelativeLayout.CENTER_HORIZONTAL);
//		btnlp.addRule(RelativeLayout.CENTER_VERTICAL);
//		//btnlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
//	
//		btnImageView.setLayoutParams(btnlp);
//		this.addView(btnImageView);
		//btnlp.alignWithParent = false;
		
		
		
		
		
		
		
		

	

	}

	public void djTouchBegin(PointF touchPointF) {

		double distance = djDistance(touchPointF, this.centerPointF);
	//获取当前图片ID
		
		
		
		System.out.println("distance " + distance);
		
	}
	
	public void djTouchMove(PointF touchPointF) {
		
		PointF previousLocationF = previousPointF;
		//角度差
		PointF previousCGP = djCgpSub(previousLocationF, centerPointF);
		
		double previousVector = djToAngle(previousCGP);
		
		previousDegress = dj_Radians_To_Degrees(previousVector);
		
		PointF nowLocation = touchPointF;
		PointF nowCGP = djCgpSub(nowLocation, centerPointF);
		
		double nowVector = djToAngle(nowCGP);
		nowDegress = dj_Radians_To_Degrees(nowVector);
		
		//在这里判断角度
	
		angle = -(nowDegress - previousDegress);
		currentDegree = djRotateRelativeLayout.getRotation();
		
		//degressNum += angle;
		
		
		angle += currentDegree;
		
		
	
		
		djSetRotate(angle);
		
		
		
		
		
		//djChangeImageView();
		
		
		
	}
	
	
	public void djChangeImageView() {
		
		
		float tempCurrentAngle =  djRotateRelativeLayout.getRotation();
		
		
		System.out.println("tempCurrentAngle" + tempCurrentAngle);
		
		
		double currentAngle = djRotateRelativeLayout.getRotation();
		double currentSub;
		 currentSub = currentAngle / djDegressBtn;
		 int temp = (int)currentSub;
		 
		 currentSub = currentAngle -djDegressBtn * temp;
		 if (currentSub > 0) 
		 {
			if (temp != previousImageNum) {
				if (currentSub > djDegressBtn / 2) {
					currentImageId += 1;
				}
			} 
			 
			
		}else if (currentSub < 0) {
			
			if (temp != previousImageNum) {
				currentImageId -= 1;
			}
			
			
			
		}
		 previousImageNum = temp;
		 
		 if (currentImageId < 0) {
			currentImageId += 6;
		}
		 
		 
		 
		
//		if (tempCurrentAngle > 0) {
//			
//			tempCurrentAngle += djDegressBtn / 2;
//		}
//		else if(tempCurrentAngle < 0){
//			tempCurrentAngle -= djDegressBtn / 2;
//		}
//		int btnTypeNum = (int)((tempCurrentAngle + djDegressBtn / 2) / (djDegressBtn));
//		btnTypeNum = (int)tempCurrentAngle / (int)djDegressBtn;
//		
//		float currentSub = tempCurrentAngle - (float)djDegressBtn * btnTypeNum;
//		

		
		
//		System.out.println("btnTypeNum" + btnTypeNum);

//		//btnTypeNum = 6-btnTypeNum;
//		System.out.println("btnTypeNum" + btnTypeNum);

		
		
	}
	

	public void djTouchEnd(float touchX,float touchY) {
		calculateDegress();
		//djChangeImageView();
	}
	
	
	public void calculateDegress() {
		
		double currentAngle = djRotateRelativeLayout.getRotation();
		double currentSub;
		 currentSub = currentAngle / djDegressBtn;
		 int temp = (int)currentSub;
		 
		 currentSub = currentAngle -djDegressBtn * temp;
		 
		 System.out.println("currentSub =  " + currentSub);
		if (currentSub > 0) {
			
			if (currentSub > djDegressBtn / 2) {
				currentSub  = djDegressBtn - currentSub;
				
			}
			else if (currentSub < djDegressBtn / 2) {
				currentSub = -currentSub;
			}
		}
		else if (currentSub < 0) {
			
			if (currentSub > -djDegressBtn / 2) {
				currentSub = - currentSub;
			}
			else if (currentSub < - djDegressBtn / 2) {
				currentSub = -djDegressBtn - currentSub;
			}
			
			
		} 
		
		
		djSetRotateAnimation(currentSub);
		
	}
	
	
	
	
	
	@Override
	public boolean onTouchEvent(MotionEvent event) {
		// TODO Auto-generated method stub
		float tempTouchX = event.getX();
		float tempTouchY = event.getY();
		
		PointF pointF = new PointF(tempTouchX, tempTouchY);
		
		
		
		switch (event.getAction()) {
		case MotionEvent.ACTION_DOWN:
			djTouchBegin(pointF);
			previousPointF = pointF;
			
			
			
			break;
		case MotionEvent.ACTION_MOVE:
			
			djTouchMove(pointF);
			previousPointF = pointF;
			break;
		case MotionEvent.ACTION_UP:
			djTouchEnd(tempTouchX, tempTouchY);
			
			
			break;

		default:
			break;
		}
		
		return true;
	}
	
	
	
	public void djSetRotateAnimation(double angle) {
		
		float tempCurrentAngle = djRotateRelativeLayout.getRotation();
		destinationAngle = tempCurrentAngle + (float)angle;
		//destinationAngle = tempCurrentAngle + (float)30.0000;
		System.out.println("tempCurrentAngle" + tempCurrentAngle + "destinationAngle" + destinationAngle );

		RotateAnimation	 rotateAnimation = new RotateAnimation((float)0.0,(float)angle,Animation.RELATIVE_TO_SELF,0.5f,Animation.RELATIVE_TO_SELF,0.5f);
			
			

			rotateAnimation.setAnimationListener(this);
			rotateAnimation.setDuration(600);
			rotateAnimation.setFillAfter(true);
			rotateAnimation.setFillBefore(true);
			rotateAnimation.setFillEnabled(true);
			rotateAnimation.setDetachWallpaper(true);
		
		
		
		djRotateRelativeLayout.startAnimation(rotateAnimation);
		
		
	}

	
	
//	public void getMyComputerCalculate() {
//		
//		Timer timer = new Timer();
//		timer.schedule(new TimerTask() {
//			
//			@Override
//			public void run() {
//				// TODO Auto-generated method stub
//				calBool = true;
//			}
//		}, 1);
//		
//		
//		while (true) {
//			myComputerCalculate++;
//			if (calBool) {
//				break;
//			}
//		}
//		
//		
//
//	}
	
	
	public void djSetRotate(double degress) {
		
		float tempDegress = (float)degress;
		
		
		
		djRotateRelativeLayout.setRotation(tempDegress);
		
	}
	
	
//	public void djRotateTo(double angle,float delay) {
//		double rotateTo = angle;
//		double currentAngle = djRotateRelativeLayout.getRotation();
//		double subAngle = rotateTo - currentAngle ;
//		double perAngle = subAngle / (double)myComputerCalculate * delay;
//		System.out.println(perAngle);
//		for(int i = 0 ; i< myComputerCalculate;i++)
//		{
//			
//			djRotateRelativeLayout.setRotation( ((float)currentAngle+ ((float)perAngle * i)));
//		}
//		
//		djRotateRelativeLayout.setRotation((float)rotateTo);
//	}
	
	
	
	
	
	
		double dj_Degrees_To_Radians(double angle) {
		return angle * 0.01745329252f;	
	}
		double dj_Radians_To_Degrees(double angle){
		return angle * 57.29577951f;
	}
		
		double djDistance(PointF v1,PointF v2)
		{
			double tempX = v1.x - v2.x;
			double tempY = v1.y - v2.y; 
			
			return Math.sqrt(tempX * tempX + tempY * tempY);
			
		}
	 
		PointF djCgpSub(PointF v1,PointF v2)
		{
			PointF temPointF = new PointF(v1.x - v2.x, v1.y - v2.y);
			return temPointF;
		}
		
		double djToAngle(PointF vF)
		{
			return Math.atan2(vF.x, vF.y);
		}
		
		public void adjustAngleByAnimation() {
			System.out.println("djRotateRelativeLayout.getRotation()" + djRotateRelativeLayout.getRotation());
			
			
		//	djRotateRelativeLayout.startAnimation(animation);
			
			
			djRotateRelativeLayout.setRotation(destinationAngle);
			djRotateRelativeLayout.clearAnimation();
			
			
			
	
			
			
			
			//currentImageId = (int)djRotateRelativeLayout.getRotation() / (int)djDegressBtn;

			
			
			if (destinationAngle / 360 < 1) {
				int desNum = (int)destinationAngle / 360;
				destinationAngle -= 360 * desNum;
			}
			
			currentImageId = (int)destinationAngle / (int)djDegressBtn;
			
			
				if (currentImageId < 0) {
					currentImageId += 6;
					if (currentImageId < 0) {
						currentImageId += 6;
					}

			}
				
				System.out.println("currentImageId" + currentImageId);
			
			
			
			System.out.println("currentImageId" + currentImageId);
			
			//设置图片
			djRotateRelativeLayout.changeImageResoures(currentImageId);
			
			if (currentImageId != previousimageId) {
				djRotateRelativeLayout.changeImageDefaultResources(previousimageId);
			}
			
			previousimageId = currentImageId;
			
			
			
			
			
			//变换图片
//djChangeImageView();
		}

		@Override
		public void onAnimationEnd(Animation animation) {
			// TODO Auto-generated method stub
			
			if (600 == animation.getDuration()) {
				adjustAngleByAnimation();
			}
			if (650 == animation.getDuration()) {
				
				djRotateRelativeLayout.clearAnimation();
			}
			
			
			
		}

		@Override
		public void onAnimationRepeat(Animation animation) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onAnimationStart(Animation animation) {
			// TODO Auto-generated method stub
			
		}

		@Override
		public void onClick(View v) {
			// TODO Auto-generated method stub
			
			
//			switch (v.getId()) {
//			case 987654:
//				if (calBool) {
//					TranslateAnimation	translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0, Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0);
//					translateAnimation.setDuration(650);
//					
//					translateAnimation.setFillAfter(true);
//					djRotateRelativeLayout.startAnimation(translateAnimation);
//					calBool = false;
//				
//				}
//				else {
//					TranslateAnimation	translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0.5f, Animation.RELATIVE_TO_PARENT,0f,Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0);
//					translateAnimation.setDuration(650);
//					
//					translateAnimation.setFillAfter(true);
//					djRotateRelativeLayout.startAnimation(translateAnimation);
//					calBool = true;
//					
//					
//				}
//				
//				
//				
//				break;
//
//			default:
//				break;
//			}
		}
		
		
	


}


一个绝对布局的类 ,调整位置
DJRotateAbsoluteView.java

package com.ldci.djrotatemenuforandroid;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.util.DisplayMetrics;
import android.widget.AbsoluteLayout;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.AbsoluteLayout.LayoutParams;

public class DJRotateAbsoluteView extends AbsoluteLayout{

	
	public DJRotateAbsoluteView(Context context,int width,int height) {
		super(context);
		// TODO Auto-generated constructor stub
		
		AbsoluteLayout.LayoutParams djlp = new AbsoluteLayout.LayoutParams(width, height, width/ 2, 0);
		
		
		DJRotateMenuView djRotateMenuView = new DJRotateMenuView(context, width, height);
		djRotateMenuView.setLayoutParams(djlp);
		
		this.addView(djRotateMenuView);
	}

}

DJRotateMenu.java

package com.ldci.djrotatemenuforandroid;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.BitmapDrawable;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class DJRotateMenu extends RelativeLayout implements OnClickListener,AnimationListener{

	
	
	private ImageView btnImageView;
	
	 private	boolean calBool = true;
	
	private DJRotateAbsoluteView djRotateAbsoluteView;
	
	public DJRotateMenu(Context context,int width,int height) {
		super(context);
		// TODO Auto-generated constructor stub
		djRotateAbsoluteView = new DJRotateAbsoluteView(context, width, height);
		
		this.addView(djRotateAbsoluteView);
		
		
		
		
		btnImageView = new ImageView(context);
		btnImageView.setId(987654);
		btnImageView.setOnClickListener(this);
		
		Bitmap btnBitmap = ((BitmapDrawable)getResources().getDrawable(R.drawable.ui_navi_triangle)).getBitmap();
		RelativeLayout.LayoutParams btnlp = new RelativeLayout.LayoutParams(btnBitmap.getWidth(),btnBitmap.getHeight());
		btnImageView.setImageBitmap(btnBitmap);
		btnlp.addRule(RelativeLayout.CENTER_HORIZONTAL);
		btnlp.addRule(RelativeLayout.CENTER_VERTICAL);
		btnlp.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
	
		btnImageView.setLayoutParams(btnlp);
		this.addView(btnImageView);
		
		
	}



	@Override
	public void onClick(View v) {
		// TODO Auto-generated method stub
		switch (v.getId()) {
		case 987654:
			if (calBool) {
				TranslateAnimation	translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0f, Animation.RELATIVE_TO_PARENT,0.5f,Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0);
				translateAnimation.setDuration(650);
			//	translateAnimation.setAnimationListener(this);
				translateAnimation.setFillAfter(true);
				djRotateAbsoluteView.startAnimation(translateAnimation);
				calBool = false;
			
			}
			else {
				TranslateAnimation	translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_PARENT,0.5f, Animation.RELATIVE_TO_PARENT,0f,Animation.RELATIVE_TO_PARENT, 0, Animation.RELATIVE_TO_PARENT, 0);
				translateAnimation.setDuration(650);
				//translateAnimation.setAnimationListener(this);
				translateAnimation.setFillAfter(true);
				djRotateAbsoluteView.startAnimation(translateAnimation);
				calBool = true;
				
				
			}
			
			
			
			break;

		default:
			break;
		}
	}



	@Override
	public void onAnimationEnd(Animation animation) {
		// TODO Auto-generated method stub
		djRotateAbsoluteView.clearAnimation();
		
	}



	@Override
	public void onAnimationRepeat(Animation animation) {
		// TODO Auto-generated method stub
		
	}



	@Override
	public void onAnimationStart(Animation animation) {
		// TODO Auto-generated method stub
		
	}

}


测试一下我们的程序
MainActivity.java

package com.ldci.djrotatemenuforandroid;

import android.os.Bundle;
import android.R.integer;
import android.app.Activity;
import android.graphics.Color;
import android.util.DisplayMetrics;
import android.view.Menu;
import android.widget.RelativeLayout;
import android.widget.RelativeLayout.LayoutParams;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		
	
		
		DisplayMetrics dMetrics = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(dMetrics);
		int width = dMetrics.widthPixels;
		int height = dMetrics.heightPixels - 125;
		
		System.out.println("==========" + height);
		

		//调用时只用这个方法就OK
		DJRotateMenu djRotateMenu = new DJRotateMenu(this, width, height);
		
		setContentView(djRotateMenu);
		
		
		
	}

	@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;
	}

}

本文完!!




【上篇】
【下篇】

抱歉!评论已关闭.