安卓界面的实际解决

    上一章节介绍的是安卓界面设计基本方法。能够设计出程序界面,似乎带来一种入门的感觉。      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,手指触摸移动,小企鹅也会跟随手指移动

最后

           我的水平有限,请评论指出不足。谢谢!


 
原文地址:https://www.cnblogs.com/divingpig/p/6427127.html