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,手指触摸移动,小企鹅也会跟随手指移动

    最后

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

    
    
     
  • 相关阅读:
    Django多表操作
    Django单表操作
    Django模板语言的复用
    DTL
    Django视图层、虚拟环境
    Django路由详解
    初识Django
    web框架
    JQ初级
    linux的基础配置命令
  • 原文地址:https://www.cnblogs.com/divingpig/p/6427127.html
Copyright © 2011-2022 走看看