上一章节介绍的是安卓界面设计基本方法。能够设计出程序界面,似乎带来一种入门的感觉。 O(∩_∩)O哈哈~
总是感觉文章写出来不够生动,所以后面我还是通过举一些大家熟知的例子来解释。
本节内容:实际的例子与安卓界面解决
一 代码和xml文件共同解决界面
例子:图片浏览器
打开手机相册,图片都会按照顺序默认平铺开。所以这一节通过xml文件和代码实现这个类似的功能
1>打开Android Studio,新建工程。在布局文件里面拖入一个线性布局。
2>在drawable文件夹下面复制几张图片
3>现在开始编码
在主Activity类里面加入两个数组,分别是ImageView数组和图片路径。
public ImageView[] img = new ImageView[3]; //图片 public int[] imagePath = new int[]{R.drawable.ball,R.drawable.computer,R.drawable.penguin}; //路径
获取到我们拖进去的线性布局,之后将图片初始化,并加入所在的布局
LinearLayout lay = (LinearLayout)findViewById(R.id.lay); //获得加入的线性布局
img[0] = new ImageView();
img[0].setImageResource(imagePath[0]); //设置ImageView的图片 lay.addView(img[0]); //加入布局
img[1] = new ImageView(); img[1].setImageResource(imagePath[1]); lay.addView(img[1]);
img[2] = new ImageView(); img[2].setImageResource(imagePath[2]); lay.addView(img[2]);
在上面的代码,findViewById()这个方法的返回值是View。安卓里面众多的可视化控件布局都是这个类的子类。
运行结果:结果很丑陋很难看,没边距,没效果,用户体验不好。但是不影响我们理解。
总结:安卓的界面控制有两个方式xml设计和代码控制。通常是两者结合起来解决问题。
二 复杂问题的解决
例子:随着手指移动的小企鹅
安卓界面上显示的东西都继承或是间接继承自View,比如布局,控件按钮复选框,进度条,文本框等等。如果屏幕上有一个物体,不是安卓所给出的控件,那么解决方式就是自己继承View来自定义控件,毕竟View才能显示出来。O(∩_∩)O哈哈~
1>新建工程,并且新建一个penguin类继承View。用eclipse补全构造函数。并且加入两个数据成员。布局文件里面只要一个FrameLayout帧布局
private float bitmapX; private float bitmapY;
这两个数据成员是我们手指点击的位置,他们来自手指触摸事件。
2>加入图片资源,复制到drawable目录下。这个目录放置我们的图片资源,系统会自动在R文件里面生成它的id
3>penguin类中覆盖onDraw( ),这个方法是安卓View的绘图方法
在onDraw()里面填加代码
Paint paint = new Paint(); Bitmap bitmap = BitmapFactory.decodeResource(this.getResources(),R.drawable.penguin); canvas.drawBitmap(bitmap,bitmapX,bitmapY,paint); if(bitmap.isRecycled()){ bitmap.recycle(); }
4>在主Activity代码里面创建penguin,获取布局的FrameLayout。给penguin绑定触摸事件,加入布局即可
FrameLayout f = (FrameLayout)findViewById(R.id.frame); final penguin p = new penguin(MainActivity.this); p.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { p.bitmapX = event.getX(); p.bitmapY = event.getY(); p.invalidate(); return true; } }); f.addView(p);
运行结果:导出apk,手指触摸移动,小企鹅也会跟随手指移动
最后
我的水平有限,请评论指出不足。谢谢!