首页 > 其他分享 >自己早期(android1.1)做的一个绘图练习

自己早期(android1.1)做的一个绘图练习

时间:2023-04-07 10:06:36浏览次数:46  
标签:canvas int text 练习 android1.1 paint indexX 绘图 rect


仅仅是个练习而已!只做了第一个菜单的事件。其他都没事件。



代码片段

public mPayCanvas(Context context) {
			super(context);
			 //获得屏幕宽高
	        WindowManager windowManager = getWindowManager();
	        Display display = windowManager.getDefaultDisplay();
	        width = display.getWidth();
	        height = display.getHeight();
	        Log.i("TAG", "screenWidth="+width);//320
	        Log.i("TAG", "screenHeight="+height);//480
			width=320;
			height=430;
			// TODO Auto-generated constructor stub
			text=new String[10];
			paint=new Paint[10];
			rect=new RectF[10];
			col=3;//菜单列数
			state=ST_Instruction;
			setST(state);
			setFocusable(true); // 如果要响应按键,必须加上这句
			clearFocus();//必须加,以防第一次按键时无效。
//			setClickable(true);
			setFocusableInTouchMode(true);
//			setPressed(true);
			setLongClickable(false);
			setTitleColor(0xffff0000);

		}



private void draw_Menu(Canvas canvas){
//			canvas.drawText("菜单", (getWidth()-(int)paint[0].measureText(text[0]))>>1, getHeight()>>1, paint[0]);
			for(int i=0;i<drawable.length;i++){
				drawable[i].draw(canvas);
				canvas.drawText(menu_item[i], drawable[i].getBounds().left, drawable[i].getBounds().bottom+paint[2].getTextSize(), paint[2]);
			}
			RectF rect_menu = new RectF(drawable[index].getBounds().left, drawable[index].getBounds().top, drawable[index].getBounds().right, drawable[index].getBounds().bottom+paint[2].getTextSize()+5);
			canvas.drawRect(rect_menu, paint[3]);
			
			drawButton(canvas,true,true);
    	}
    	private void touchEvent_Menu(MotionEvent event){
    		float x=event.getX();
			float y=event.getY();
			
			if(x>rect[0].left&&x<rect[0].right&&y>rect[0].top&&y<rect[0].bottom){
				switch (index) {
				case 0:
					setST(ST_InputNumber);
					
					break;
				case 1:
				case 2:
				case 3:
					Log.i("TAG", "index====="+index);
				break;

				default:
					break;
				}
				
				return;
			}else if(x>rect[1].left&&x<rect[1].right&&y>rect[1].top&&y<rect[1].bottom){
				setST(ST_Exit);
				return;
			}
			
			int xx=drawable[0].getBounds().left;
			int yy=drawable[0].getBounds().top;
			int w=drawable[0].getIntrinsicWidth();//32
			int h=drawable[0].getIntrinsicHeight()+(int)paint[2].getTextSize();//48+
			int gapX=xx;
			int gapY=this.gapY-(int)paint[2].getTextSize();
//			Log.i("TAG", "w=="+w);
//	    	Log.i("TAG", "h=="+h);
//	    	Log.i("gapX", "gapX=="+gapX);
//	    	Log.i("gapY", "gapY=="+gapY);
	    	
			int indexX=0;
			int indexY=0;
			for(int i=0;i<drawable.length;i++){
				indexX=i%col;
		    	indexY=i/col;
			    if (x >= xx+indexX*gapX + indexX * w && x < xx+indexX*gapX + (indexX + 1) * w && y >= yy+indexY*gapY + indexY * h && y < yy+indexY*gapY + (indexY + 1) * h) {
			    	this.index=i;
			    	this.indexX=indexX;
			    	this.indexY=indexY;
//			    	Log.i("TAG", "index=="+index);
//			    	Log.i("TAG", "indexX=="+indexX);
//			    	Log.i("TAG", "indexY=="+indexY);
//			    	Log.i("TAG", "==============================================");
			    	keyDown_Menu(KeyEvent.KEYCODE_DPAD_CENTER,null);
			    	break;
			    }
			}
    	}

private void drawButton(Canvas canvas,boolean hasLeft,boolean hasRight){
    		if(hasLeft){
    			canvas.drawText(text[8], rect[0].left+2, rect[0].bottom-5, paint[0]);
//    			canvas.drawText(text[8], x+5, height-5, paint[0]);
//    			rect[0] = new RectF(2, getHeight()-paint[0].getTextSize()-2-5, 2+paint[0].measureText(text[8])+5, getHeight()-2);
    			canvas.drawRect(rect[0], paint[3]);
    		}
    		if(hasRight){
    			canvas.drawText(text[9], rect[1].left+2, rect[1].bottom-5, paint[0]);
//    			canvas.drawText(text[9], width-paint[0].measureText(text[9])-2, height-5, paint[0]);
//    			rect[1] = new RectF(getWidth()-paint[0].measureText(text[9])-5, getHeight()-paint[0].getTextSize()-2-5, getWidth()-2, getHeight()-2);
    			canvas.drawRect(rect[1], paint[3]);
    			
    		}
    	}
    	private void drawGrid(Canvas canvas){
    		String[][] pad={{"1","2","3"},{"4","5","6"},{"7","8","9"},{"退格","0","全清"}};
    		RectF rect=null;
    		int col=pad[0].length;
    		int row=pad.length;
    		int w=80;
    		int h=60;
    		int x=((width-col*w)>>1);
    		int y=(height>>1)-h*2;
    		for(int i=0;i<row;i++){
    			for(int j=0;j<col;j++){
	    			rect = new RectF(x+j*w,y+i*h,x+j*w+w,y+h+i*h);
	    			canvas.drawRect(rect, paint[3]);
	    			canvas.drawText(pad[i][j], rect.left+((int)(w-paint[0].measureText(pad[i][j]))>>1),rect.top+(h>>1)+5, paint[0]);
    			}
    		}
    	}


  • 自己早期(android1.1)做的一个绘图练习_sed

  • 大小: 12.5 KB
  • 自己早期(android1.1)做的一个绘图练习_屏幕宽高_02

  • 大小: 12.1 KB
  • 自己早期(android1.1)做的一个绘图练习_i++_03

  • 大小: 25 KB
  • 自己早期(android1.1)做的一个绘图练习_屏幕宽高_04

  • 大小: 13.5 KB
  • mPay.rar (68.7 KB)
  • 下载次数: 18
  • 自己早期(android1.1)做的一个绘图练习_sed_05

  • 大小: 24.5 KB
  • 查看图片附件

标签:canvas,int,text,练习,android1.1,paint,indexX,绘图,rect
From: https://blog.51cto.com/u_5454003/6174585

相关文章

  • Dialog&Notification&OptionsMenu练习
    下面的menu没有意义,仅仅是个练习而已,看图先:布局:<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"androi......
  • ImageSwitcher&Gallery练习
    先看图再说:布局如下:<?xmlversion="1.0"encoding="utf-8"?><RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout......
  • SQLiteOpenHelper&SharedPreferences练习
    目录结构:packagecom.dc.app;importjava.text.DecimalFormat;importjava.util.Locale;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.app.Dialog;importandroid.app.Notification;importandroid.app.Notificati......
  • 循环语句练习(2)
    1.数组项目求和点击查看代码intsum=0;int[]s=newint[6]{2,3,4,7,9,6};foreach(intiins){sum+=i;}Console.WriteLine(sum);2.数组项求最大值和最小值......
  • 结对编程——四则运算练习题
    结对编程题目如下:小学老师要每周给同学出300道四则运算练习题。这个程序有很多种实现方式:C/C++C#/VB.net/JavaExcelUnixShellEmacs/Powershell/VbscriptPerlPython一个或两个运算符(a+b或a+b+c),100以内的数字,不需要写答案。需要检查答案是否正确,并且保证答案在0......
  • AIArena Frontend 初步练习
    尝试对starter项目的页面进行改变修改侧边栏,只留下最上面的「仪表盘」和「列表页」两个大模块inSideNav.vuethecodeforthesidebarmenuis:<menu-content:navData="menu"/>fromtherewecangettoMenuContent.vueIthinkitisreferencingtheitemsinalis......
  • Python小练习:权重初始化(Weight Initialization)
    Python小练习:权重初始化(WeightInitialization)作者:凯鲁嘎吉-博客园 http://www.cnblogs.com/kailugaji/调用Pytorch中的torch.nn.init.xxx实现对模型权重与偏置初始化。1.weight_init_test.py1#-*-coding:utf-8-*-2#Author:凯鲁嘎吉CoralGajic3#https://w......
  • 链表练习4
    已知整型链表,设计算法,删除所有结点值为x的结点,删除的结点个数通过形参返回。#include<stdio.h>#include<stdlib.h>typedefstructnode{intdata;structnode*next;}Node,*LinkList;LinkListcreate(){LinkListh,r,s;h=(LinkList)malloc(sizeof(Node));r=h;inta;sc......
  • CAD绘图次序快捷键是什么?怎么用?
    在CAD绘图过程中,当图纸中某一图形被其他图形遮挡时,如果想要将其显示出来可以通过调整其绘图次序来实现。那么,你知道CAD绘图次序快捷键是什么吗?今天小编来给大家简单介绍一下浩辰CAD软件中CAD绘图次序快捷键是什么以及使用技巧,一起来看看吧!CAD绘图次序快捷键是什么?CAD绘图次序命......
  • Python小练习:处理字符串
    Python小练习:处理字符串作者:凯鲁嘎吉-博客园 http://www.cnblogs.com/kailugaji/介绍两种处理字符串的方式:1.将英语名词单数转化为复数形式(仅适用于一般形式),2.将字符串(带有下换线_)转化为驼峰化形式。1.word_test.py1#-*-coding:utf-8-*-2#Author:凯鲁嘎吉......