【Android】【自定义View】实现搜索放大镜旋转view
2012-07-26 11:50
816 查看
直接上代码吧:
调用方法:
public class SycleSearchView extends View implements Runnable{ private int width=200,height=200; //画布宽高 private int srcId; private Bitmap src=null; private Context context; private int left=0,top=0; private int step=4; //5 private boolean positive; private Thread thread; private boolean canStart=true; private int iw,ih;//图片的宽高 public SycleSearchView(Context context, AttributeSet attrs) { super(context, attrs); // TODO Auto-generated constructor stub this.context=context; } public SycleSearchView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); // TODO Auto-generated constructor stub this.context=context; } private void init(){ left=0; top=height/2; } /** * * 方法: initXY * 描述: TODO * 参数: @param x * 参数: @param positive true 表示向右运动 * 返回: void * 异常 */ private void initXY(int x){ left=x; top=height/2-(int) Math.sqrt(height*height/4-(width/2-x)*(width/2-x)); if(!positive) { top=height-top; } } public void setSize(int width,int height){ this.width=width; this.height=height; } public void setImgRes(int id){ this.srcId=id; src=BitmapFactory.decodeResource(context.getResources(), srcId); iw=src.getWidth(); ih=src.getHeight(); } @Override protected void onDraw(Canvas canvas) { // TODO Auto-generated method stub super.onDraw(canvas); if(src==null){ return; } canvas.drawBitmap(src, left, top, null); } public void startsycle(){ canStart=true; Thread localThread = new Thread(this); this.thread = localThread; this.thread.start(); } public void stopsycle(){ canStart=false; if(this.thread!=null){ this.thread.interrupt(); } } @Override public void run() { // TODO Auto-generated method stub while(canStart){ if(positive){ if(left+step<width){ initXY(left+step); }else{ positive=!positive; initXY(left-step); } }else{ if(left-step>0){ initXY(left-step); }else{ positive=!positive; initXY(left+step); } } postInvalidate(); try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } } } }
调用方法:
Boolean test_start = false; private Button.OnClickListener clickImageButton_imageButton_search = new Button.OnClickListener() { public void onClick(View v) { System.out.println("------clickImageButton_imageButton_search--------"); test_start = !test_start; if(test_start){ imageButton_magnifier.startsycle(); } else{ imageButton_magnifier.stopsycle(); } } };
相关文章推荐
- Android自定义View软键盘实现搜索
- Android自定义View实现QQ音乐中圆形旋转碟子
- Android自定义View实现叶子飘动旋转效果(四)
- Android 自定义View实现专辑图片不停旋转
- Android客户端之“微服私访”App的系统学习(七)XRecyclerView快速实现列表界面+自定义Search输入框,软键盘搜索按钮监听+TextView部分样式改变
- Android 自定义View消除锯齿实现图片旋转,添加边框及文字说明
- Android自定义View实现不断旋转的圆形图片
- Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控旋转,圆角矩形,圆形和仿刮刮卡效果
- Android自定义View实现搜索动画效果
- 【Android】自定义ImageView实现图片的平移、缩放、旋转(手势操作)
- android自定义View实现图片的绘制、旋转、缩放
- 利用Android自定义View实现转盘旋转的效果
- Android自定义View实现旋转的圆形图片
- Android自定义View实现转盘旋转的效果
- Android自定义View实现多片叶子旋转滑动(五)
- android实现自定义RelativeLayout可拖动、缩放、旋转TextView-更新版
- Android自定义View的三种实现方式
- android 腾讯微博分享功能实现及自定义webview认证
- Android自定义控件系列五:自定义ViewGroup(一)实现ViewPager效果
- Android 自定义 View 实现通讯录字母索引(仿微信通讯录)