小菜总结笔记。

    技术2022-05-19  24

     

    参考农民伯伯快速入门:http://www.cnblogs.com/over140/archive/2010/09/27/1836567.html

     

     

    布局:类似于HTML的CSS

    1,FrameLayout

    帧布局:所有元素重叠放在左上角

    2,LinearLayout

    线行布局,android:orientation="vertical"垂直放置元素

    3,AbsolutionLayout

    绝对布局:通过android:layout_x和android:layout_y指定位置

    4,RelativeLayout

    相对布局:这个内容很多,控制复杂不建议使用

    5,TableLayout

    表格布局:和TableRow搭配使用

     

    Android四大组件:

    Activity,Service,Broadcast Receiver 和 Content Provider

     

    Activity

    在android中Activity有四种基本状态:1、Running位于屏幕最前端时,此时处于可见状态,和用户可交互的状态。2、Paused当Acitivy被另一个透明的或者非全屏的Activity覆盖时的状态叫Paused状态,虽然可见但不可交互。3、Stop当Activity被另外一个Activity覆盖、界面不可见时处于Stop状态。4、KilledActivity被系统杀死或者跟本没启动时就是Killed状态。

     

     

    Service

     

     

    Service对象不能自己启动,需要通过某个Activity、Service或者其他Context对象来启动。启动的方法有两种,Context.startService和Context.bindService()。两种方式的生命周期是不同的,具体如下所示。

    Context.startService方式的生命周期: 启动时,startService –> onCreate() –> onStart() 停止时,stopService –> onDestroy()

    Context.bindService方式的生命周期: 绑定时,bindService  -> onCreate() –> onBind() 解绑定时,unbindService –>onUnbind() –> onDestory()

    Broadcast Receiver参考资料:http://android.yaohuiji.com/archives/727

    Intent是一个对动作和行为的抽象描述,负责组件之间程序之间进行消息传递。那么Broadcast Receiver组件就提供了一种把Intent作为一个消息广播出去,由所有对其感兴趣的程序对其作出反应的机制。

    Content Provider 参考资料:http://android.yaohuiji.com/archives/725

    在Android中,应用程序彼此之间相互独立的,它们都运行在自己独立的虚拟机中。Content Provider 提供了程序之间共享数据的方法,一个程序可以使用Content Provider 定义一个URI,提供统一的操作接口,其他程序可以通过此URI访问指定的数据,进行数据的增、删、改、查。

    常用代码块

           1   在当前Activity中启动另外一个Activity

              startActivity(new Intent(this,目标Activity.class));

    2   从当前ContentView从查找控件

         (Button)findViewById(R.id.btnAbout)

        R.id.btnAbout指控件id。

    3   获取屏幕宽高

        DisplayMetrics dm = new DisplayMetrics();

        //获取窗口属性

        getWindowManager().getDefaultDisplay().getMetrics(dm);

        int screenWidth = dm.widthPixels;//320

        int screenHeight = dm.heightPixels;//480

    4   无标题栏、全屏

        //无标题栏

        requestWindowFeature(Window.FEATURE_NO_TITLE);

        //全屏模式

      getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,   

          WindowManager.LayoutParams.FLAG_FULLSCREEN);

      注意在setContentView()之前调用,否则无效。

    5   注册activity

             所有用到的Activity都必须在AndroidManifest.xml中注册,否则会报空指针错误。如:<activity android:name="com.common.TestView"> ,注意是包名+类名。

    6 . Menu

    public boolean onCreateOptionsMenu(Menu menu){  super.onCreateOptionsMenu(menu);   menu.add(0,MENU_ABOUT,0,R.string).setIcon();     return true; };  public boolean onOptionsItemSelected(MenuItem item){  super.onOptionsItemSelected(item);  switch(item.getItemId())  {  case   }  return true;  };e

     

     7.Dialog

    // 定义对话框对象 

    Dialog dialog = new AlertDialog.Builder(this) 

    .setIcon(android.R.drawable.btn_star).setTitle("喜好调查") 

    .setMessage("你喜欢看爱德华.诺顿Edward Norton的电影吗?") 

    .setNegativeButton("不喜欢", ocl).setNeutralButton("一般般", ocl) 

    .setPositiveButton("很喜欢", ocl).create(); 

     //显示对话框 

    dialog.show(); 

    小技巧

      1          使用系统的图标

             例如调用系统打电话的图标:

      <ImageView android:src="@android:drawable/ic_menu_call"

      图标名称和效果(Android1.51.6)

    http://since2006.com/android/1.5-drawables.php

    http://since2006.com/android/1.6-drawables.php

     

     2          让控件透明,如ImageButton

             设置android:background="@null"

     

     3          layout中直接指定onclick方法

             不用手动绑定,在layout中设置android:onClick=”methodName”methodName为对应Activity中的方法,如下格式:public void methodName(View view){} (适应1.6以上版本)

     

     4         进入界面就显示/隐藏软键盘

             AndroidManifest.xml中设置activity

             android:windowSoftInputMode="stateHidden"

     

     5          界面可视化布局工具

             系统提供可视化布局并不好用,这里推荐一款,布局完后点生成代码即可:

             DroidDrawhttp://www.droiddraw.org/

     

       6         Eclipse中看Android的源码

             将源代码拷贝至android-sdk-windows/platforms/android-4/sources下即可。注意源码版本对应android-4文件夹,这里指Android1.6的源码。

      7   ctrl+F11  F12  横/竖屏切换

     

     


    最新回复(0)