当前位置: 首页 > 科技观察

Android开发速简教程十六:Button画笔实例

时间:2023-03-12 12:15:57 科技观察

把RadioButton换成Button,同样在res\layout新建一个brush.xml:修改Brushes.java,完成代码如下:1publicclassBrushesextendsGraphics2DActivity2implementsOnClickListener{34privateButtonbtnPattern;5privateButtonbtnGradients;67publicvoidonCreate(BundlesavedInstanceState){8super.onCreate(savedInstanceState);9setContentView(R.layout.brush);10graphic2dView=(GuidebeeGraphics2DView)11findViewById(R.id.graphics2dview);12btnPattern=(Button)findViewById(R.id.btnPattern);13btnGradients=(按钮)findViewById(R.id.btnGradients);14btnPattern.setOnClickListener(this);15btnGradients.setOnClickListener(this);16}1718@Override19protectedvoiddrawImage(){20drawPatterns();2122}2324@Override25publicvoidonClick(Viewview){26if(view==btnPattern){27drawPatterns();28}else{29drawGradient();30}31graphic2dView.refreshCanvas();3233}3435privatevoiddrawPatterns(){36TextureBrushbrush1;37TextureBrushbrush2;38TextureBrushbrush3;3940AffineTransformmatrix1=newAffineTransform();41AffineTransformmatrix2=newAffineTransform();42Bitmapbitmap43.desourceRmapResource4,desourceRmapResource4,desourceRmapFactory());45int[]rgbData=newint[bitmap.getHeight()46*bitmap.getWidth()];47bitmap.getPixels(rgbData,0,bitmap.getWidth(),0,0,48bitmap.getWidth(),bitmap.getHeight());49brush1=newTextureBrush(rgbData,bitmap.getWidth(),50bitmap.getHeight());5152bitmap=BitmapFactory.decodeResource(getResources(),53R.drawable.bird);54rgbData=newint[bitmap.getHeight()*bitmap.getWidth()];55bitmap.getPixels(rgbData,0,bitmap.getWidth(),0,0,56bitmap.getWidth(),bitmap.getHeight());57brush2=newTextureBrush(rgbData,bitmap.getWidth(),58bitmap.getHeight());59brush3=newTextureBrush(rgbData,bitmap.getWidth(),60bitmap.getHeight(),127);61matrix2.translate(50,50);62//Clearthecanvaswithwhitecolor.63graphics2D.clear(Color.WHITE);64graphics2D.setAffineTransform(matrix1);65graphics2D.fillRectangle(brush1,66newRectangle(20,50,100,100));67graphics2D.fillOval(brush2,10,10,80,80);68graphics2D.setAffineTransform(matrix2);69graphics2D.fillOval(brush3,10,10,80,80);7071}7273privatevoiddrawGradient(){74/*Thelineargradientcolor*/75LinearGradientBrushbrush1;76/*Theradialgradientcolor*/77RadialGradientBrushbrush2;78/*Thesecondradialgradientcolor*/79RadialGradientBrushbrush3;8081char[]engText="Brush".toCharArray();8283FontExfont=FontEx.getSystemFont();8485intfontSize=44;86intX=15;87intY=50;88int[]fractions=newint[]{13,242};89Color[]colors=newColor[]{newColor(0xffff6600),90newColor(0xffffff66)};91brush1=newLinearGradientBrush(50,50,150,125,92fractions,colors,93Brush.NO_CYCLE);9495fractions=newint[]{13,128,255};96colors=newColor[]{newColor(0xffff6600),97newColor(0xfffff66),98newColor(0xffff6900)2=98newColor(0xff)2};990,100,50,100fractions,colors);101102fractions=newint[]{0,255};103colors=newColor[]{newColor(0xFFFFFF00),104newColor(0xFF000000)};105brush3=newRadialGradientBrush(50,50,100,106fractions,colors);107//Clearthecanvaswithwhitecolor.108graphics2D.clear(Color.white);109graphics2D.fillRectangle(brush1,110newRectangle(10,75,120,80));111112Penpen=newPen(brush2,8);113graphics2D.drawOval(pen,20,60,100,50);114graphics2D。setDefaultBrush(brush3);115pen=newPen(brush2,2);116graphics2D.setDefaultPen(pen);117graphics2D.drawChars(font,fontSize,engText,0,118engText.length,X,Y);119}120121}最后介绍RadioButton和Button,这时候,你应该对Android提供的控件的用法有了基本的了解。控件提供onClick()、onLongClick()、onFocusChange()、onKey()、onTouch()、onCreateContextMenu()等事件响应用户。有几种方法可以处理用户事件。一种是使用示例代码通过Activity实现OnClickListener接口,另一种是使用如下代码支持Button的事件处理方法:}};protectedvoidonCreate(Bundles)..//CaptureourbuttonfromlayoutButtonbutton=(Button)findViewById(R.id.corky);//注册theonClicklistenerwiththeimplementationabovebutton.setOnClickListener(mCorkyListener);...}创建自定义控件时,也可以重载onKeyDown(int,KeyEvent),onKeyUp(int,KeyEvent),onTouchEvent(MotionEvent)等来处理用户事件。