zoukankan      html  css  js  c++  java
  • 安卓界面的实际解决

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

    最后

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

    
    
     
  • 相关阅读:
    cf C. Vasya and Robot
    zoj 3805 Machine
    cf B. Vasya and Public Transport
    cf D. Queue
    cf C. Find Maximum
    cf B. Two Heaps
    cf C. Jeff and Rounding
    cf B. Jeff and Periods
    cf A. Jeff and Digits
    I Think I Need a Houseboat
  • 原文地址:https://www.cnblogs.com/divingpig/p/6427127.html
Copyright © 2011-2022 走看看