Android记录9--实现转盘效果
来源:互联网 发布:中国出口数据统计 编辑:程序博客网 时间:2024/05/17 06:04
Android记录9--实现转盘效果
2013年10月16日
我今天也只是刚好看到这个,看到网友实现了一个转盘的效果,但试了一下好像不太行,所以就修改了一下程序最终实现转盘的效果,我对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" android:background="@drawable/back" > <com.wwj.turnplate.TurnPlateView android:id="@+id/turnplate" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" /> <Button android:id="@+id/btnStart" android:layout_width="70dp" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentLeft="true" android:text="开始" /> <Button android:id="@+id/btnStop" android:layout_width="70dp" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_alignParentRight="true" android:text="结束" /></RelativeLayout>
自定义View
/2013.10.16_TurnPlate_Demo/src/com/wwj/turnplate/TurnPlateView.java
package com.wwj.turnplate;import android.content.Context;import android.content.res.Resources;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Canvas;import android.graphics.Matrix;import android.util.AttributeSet;import android.view.View;public class TurnPlateView extends View implements Runnable{// 界面需要的图片private Bitmap turnPlatePic;// 转盘图片private Bitmap pointerPic;// 指针图片// 旋转矩阵private Matrix panRotate = new Matrix();// 平移矩阵private Matrix pointerTranslate = new Matrix();private int x = 0;private boolean ifRoate = false;public TurnPlateView(Context context, AttributeSet attrs) {super(context, attrs);Resources r = context.getResources();// 生成图片turnPlatePic = BitmapFactory.decodeStream(r.openRawResource(R.drawable.turnplate));pointerPic = BitmapFactory.decodeStream(r.openRawResource(R.drawable.pointer));// 用线程刷新界面Thread thread = new Thread(this);thread.start();}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);canvas.translate(75, 100);canvas.drawBitmap(turnPlatePic, panRotate, null);canvas.translate(turnPlatePic.getWidth() / 2 - pointerPic.getWidth() / 2, 20);canvas.rotate(x, pointerPic.getWidth() / 2,pointerPic.getHeight() - 35);canvas.drawBitmap(pointerPic, pointerTranslate, null);}@Overridepublic void run() {try {while(true) {if (ifRoate) {this.x += 25;//这个函数强制UI线程刷新界面this.postInvalidate();Thread.sleep(50);}}} catch(InterruptedException e) {e.printStackTrace();}}public void startRoate() {this.ifRoate = true;}public void stopRotate() {this.ifRoate = false;}}
主Activity
package com.wwj.turnplate;import android.app.Activity;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class MainActivity extends Activity implements OnClickListener{private TurnPlateView plateView;private Button btnStart;private Button btnStop;protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);plateView = (TurnPlateView) findViewById(R.id.turnplate);btnStart = (Button) findViewById(R.id.btnStart);btnStop = (Button) findViewById(R.id.btnStop);btnStart.setOnClickListener(this);btnStop.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch(v.getId()) {case R.id.btnStart:plateView.startRoate();break;case R.id.btnStop:plateView.stopRotate();break;}}}
- Android记录9--实现转盘效果
- Android实现转盘效果
- android实现大转盘效果
- Android转盘按钮效果巧妙实现
- 利用Android自定义View实现转盘旋转的效果
- Android自定义View实现转盘旋转的效果
- 利用surfaceview实现转盘效果
- Android实现抽奖转盘
- 自定义View实现转盘旋转效果
- cocos2dx实现转盘旋转外加粒子效果
- 3种转盘抽奖动画效果实现
- Android转盘菜单的实现
- Android 抽奖转盘的实现
- Android简单转盘的实现
- Android实现抽奖转盘动画
- Android抽奖转盘的实现
- android一个转盘效果的容器viewgroup
- Android 实现圆形转盘菜单(CirCleMenu)
- Execl相关操作
- Session 基础知识 生命周期
- <MFC>打开文件和保存文件对话框
- 多线程中有关线程锁的简化应用。
- linux中程序的观察
- Android记录9--实现转盘效果
- Android开发 重启运用程序的代码
- 时尚的CSS3进度条
- 普通表 分区表 大对象表之间不同的segment分配
- 2014百度校园招聘研发一面
- ubuntu自动安装 nginx后 文件结构及位置
- php 执行shell命令的函数
- 2.0 Introduction
- hibernate学习笔记(三)