• Android 入门到精通 (界面编程#1从Button说起)


    Android 界面编程有两种基本的方法,一种是在代码中,动态创建一个个组件,及把这些组件用Layout来进行组合成复杂的界面展现。一种是用图形化的方式来编写 布局Layout,这些布局被保存在XML文件中,会编译成资源,被程序中的Activity来加载(setContentView()), 再通过findViewById方式来获得每一个界面组件的引用进行操作。对于大多数人来说,喜欢最直观的方式,既代码中动态生成的方式。我们就先从这里说起,至于可视化编程及布局资源的方式以后专门来讲述。
    一,布局管理(Layout)
          每一个界面组件都是View的子类,都可以单独占用一个屏幕,但是真正的有用的界面都是这些组件的组合,在Android中都是用各种Layout来进行布局管理,这与传统的J2SE中的一些AWT,SWING界面方式基本相同,这里就不多说。
    二,一个单独的界面元素:
         在前面说到Hello World例子中,讲过这样一段代码。在Activity中.
       public class HelloActivity extends Activity {
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            TextView tv = new TextView(this);
            tv.setText("Hello, World!");
            this.setContentView(tv);
          
        }
    }
    这里并没有用到Layout,这就是单独的组件方式。也可以改为:
    super.onCreate(savedInstanceState);
            Button btn = new Button(this);
            btn.setText("TestButton");
            this.setContentView(btn);
    编译运行,会有一个全屏的Button,当然这不是你想要的实用的界面.那我们就用Layout来布局
            super.onCreate(savedInstanceState);
            Button btn = new Button(this);
            btn.setText("TestButton");
            Button btn2 = new Button(this);
            btn2.setText("TestButton2");
            LinearLayout layout = new LinearLayout(this);
            layout.setOrientation(LinearLayout.VERTICAL);
            layout.addView(btn);
            layout.addView(btn2);
            this.setContentView(layout);
    编译运行,你就可以看到了两个上下排列的按钮,当然对于布局管理器的使用,做过PC 上AWT,SWING的人都不陌生,这里就不赘述。
           那如何响应事件呢: 大家猜一猜?想必大家不难猜到,在AWT中,在手机的J2ME中,都是用Listener 来处理事件响应,Android也未能脱俗。这与Blackberry,Symbian中的Observer是同一个道理。都是使用了设计模式的观察者模式。下面来看一个能响应事件的例子。

    import android.app.Activity;
    import android.os.Bundle;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;
    import android.widget.LinearLayout;


    public class HelloActivity extends Activity implements OnClickListener {
      Button btn = null;
      Button btn2 = null;
        public void onClick(View v) {   
      if (v ==  btn)
      {
          this.setTitle("You Clicked Button1");     
      }
      if (v ==  btn2)
      {
          this.setTitle("You Clicked Button2");
      }  
     } 
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            btn = new Button(this);
            btn2 = new Button(this);
            btn.setText("TestButton1");       
            btn2.setText("TestButton2");
            btn.setOnClickListener(this);
            btn2.setOnClickListener(this);
            LinearLayout layout = new LinearLayout(this);
            layout.setOrientation(LinearLayout.VERTICAL);
            layout.addView(btn);
            layout.addView(btn2);
            this.setContentView(layout);      
        }
    }

    步骤是:
    一,生成两个Button,配置Click事件监听者为HelloActivity ,此类实现了OnClickListener接口。
    二,放入布局,按布局显示两个Button
    三,按下其中一个Button,生成Click事件,调用HelloActivity 的OnClick接口函数。
    四,对于View参数的值,判断是哪个View(Button)。改写Activity的Titile内容。注意,可别去对比View.getId(),缺省情况下,每个组件的Id值都为-1,除非人为设定Id值,用可视化编程时,为自动为其生成一个Id值。

  • 相关阅读:
    ffmpeg+EasyDSS流媒体服务器实现稳定的rtmp推流直播
    ffmpeg+EasyDSS流媒体服务器实现稳定的rtmp推流直播
    EasyPlayerPro安卓流媒体播放器实现Android H.265硬解码流程
    EasyPlayerPro安卓流媒体播放器实现Android H.265硬解码流程
    EasyPlayer RTSP安卓Android播放器架构简析
    EasyPlayer RTSP安卓Android播放器架构简析
    解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
    解决RTMP推送时间戳问题引起HLS切片不均匀导致手机浏览器播放卡顿的问题
    EasyPusher/EasyDarwin支持H.265 RTSP/RTP直播推流与分发播放
    EasyPusher/EasyDarwin支持H.265 RTSP/RTP直播推流与分发播放
  • 原文地址:https://www.cnblogs.com/windwithlife/p/1528666.html
Copyright © 2020-2023  润新知