Android 基础到提高


getString(R.string.homepage_url);//根据资源标识符获取内容

输入类型的验证
Android:inputType   替换以下属性  
android:password|android:ginglieLine|android:number|android:phoneNum|
android:capitalize|android:autoText|android:editable
-----------------流程------------------
1.setContentView(R.layout.main);
2.findViews()
3.restorePrefs()//参考优先级
4.setOnclickListensers();
------------------规范---------------------
button_abc 表示按钮
field_abc 表示输入字段
view_abc   表示显示字段 text_view

------------------------创建菜单----------------------
override
public boolean onCreateOptionsMenu(Menu menu){
menu.add(0, MENU_ABOUT, 0, "关于...").setIcon(android.R.drawable.ic_menu_help);
menu.add(0, MENU_Quit, 0, "结束").setIcon(android.R.drawable.ic_menu_close_clear_cancel);
return super.onCreateOptionsMenu(menu);
}
//menu.add(0, 标识符(identifer), 0, 字符串或资源标识符).setIcon(android.R.drawable.ic_menu_close_clear_cancel);
图标 到 Tango,Nuvola,OpenclipArt 等网站有高质量的图标
内置图标 .setIcon(android.R.drawable.ic_menu_help)     android 本身提供了一些现成的图标

@Override
public boolean onOptionsItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()) {
   case MENU_ABOUT:
    openOptionsDialog();
    break;
   case MENU_Quit:
    finish();
   break;
}
return super.onOptionsItemSelected(item);
}

包括 1。创建菜单 2。处理菜单

------------------------Manifest----------------------
Activity
Broadcast Intent Receiver
Service
Content Provider

package="com.demo.android.bmi" //命名空间
android:versionCode="1" //版本
android:versionName="1.0" //版本名
<application android:icon="@drawable/icon_128" //图标大小 64*64
      android:label="@string/app_name" //主界面的名称www.bkjia.com
<activity android:name=".Bmi" //表示当前命名空间的activity .也可以不写
   <intent-filter>
    <action android:name="android.intent.action.MAIN" /> //程序切入点
    <category android:name="android.intent.category.LAUNCHER" /> //应用程序列表
   </intent-filter>
   intent-filter 有action 和 category 两个标签
service
receiver
provider

uses-permission
permission
instrumentation

-----------------------------Activity----------------------
1.独立的activity      //单纯跳到下个屏幕
Intent intent = new Intent();
intent.setClass(srcActivity.this, tarActivity.class);
startActivity(intent);
2.相互依赖的activity //activity 之间提供数据
Intent intent = new Intent();
intent.setClass(srcActivity.this, tarActivity.class);
Bundle bundle = new Bundle(); //传递的数据
bundle.putString("key",value);
...putInt 等很多方法 参考帮助文档
intent.putExtras(bundle);
startActivity(intent);

//新activity 解开信息
Bundle bundle = getIntent().getExtras();
value = bundle.getString(key) //和set 数据类型相对应

。。。也可以使用 intent.setString 等方法传递参数不建议使用

----------------------intent------------------------
Intent intent = new Intent(动作,内容);
动作:Intent.ACTION_VIEW ...看帮助
内容:activity,Uri... 看帮助
startActivity(intent);

Uri uri = Uri.parse("http://baidu.com");
Uri uri = Uri.parse("geo: 39.895874, 116.321238");

-----------------信息提醒(Notification)--------------
1。状态栏提醒
铃音|震动|闪灯提醒|状态栏信息
比如收到新消息 版本更新等信息 等消息通知

2. 使用状态栏传递消息
     protected void showNotification (double BMI) {
    NotificationManager barManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); //获取消息管理器
    //getSystemService(ALARM_SERVICE) //获取闹铃
查看帮助文档 getSystemService 找到最新的内置系统服务列表
    Notification barMsg = new Notification( //提醒消息
        R.drawable.icon_128,
           "哦, 你过重了!",
           System.currentTimeMillis() //信息到达时间
           );
   
    barMsg.defaults |= Notification.DEFAULT_SOUND;
    //barMsg.defaults |= Notification.DEFAULT_ALL;
   
    PendingIntent contentIntent = PendingIntent.getActivity( //当用户点选状态栏信息是执行一个activity
           this,
           0,
                new Intent(this, Bmi.class),
                PendingIntent.FLAG_UPDATE_CURRENT);
        
    barMsg.setLatestEventInfo(
        Report.this, //当前activity
        "你的 BMI 值过高", //状态栏显示的主题
    "通知监督人", // 状态栏中显示的说明
    contentIntent // 传入参数 指定当用户按下状态栏中信息时让机器开始执行的功能
   );
   
    barManager.notify(0, barMsg); //通知信息
    }

    pendingInent getService getBroadcast 方法执行一个服务或广播

    内置图标 R.drawable.stat_sys_warning //系统状态图标

-------------------对话框------------------
setPositiveButton("确定",
new DialogInterface.OnclickListener(){
   public void Onclick(
    DialogInterface dialoginterface, int i){
    }
}
)

setPositiveButton, setNegativeButton, setNeutralButton
默认代表正面 中立 反对

对话框显示
AlertDialog.Builder ab= new AlertDialog.Builder(activity.this);
ab.setTitle
ab.setMessage
ab.setPositiveButton
ab.show

Toast界面组件(不弹出提醒) //提示信息
Toast.makeText(activity.this,消息,Toast.LENGTH_SHORT).show();

-------------------日志和调试Log------------------
模拟上的调试 Dev Tools -- > Developer Settings
管理日志 public static final boolean On = false;
实机上调试 usb 连接电脑 Devices 窗口显示实机的代号

系统不足的回收:
先回收与其它Activity 或 Service/Intent Receiver 无关的进程 (优先回收独立的Activity)
再回收处于Stoped状态的activity 最久没有使用的先回收
还不够回收Service
快不行 关掉可见的activity
关掉当前activity
最后就是换手机

-------------------优先级(Preference)------------------
private void restorePrefs() { //优先级(记住上次信息避免重复输入) 可以没有
SharedPreferences settings = getSharedPreferences("BMI_PREF", 0); //声明
寻找系统有无符合"BMI_PREF"字符串(PREF参数)作为文件名的优先级设置文件 如果有使用"settings" 作为代号操作

String pref_height = settings.getString(PREF_HEIGHT, ""); //获取内容
if(! "".equals(pref_height)) {
     field_height.setText(pref_height);
     field_weight.requestFocus();
}
}

@Override
protected void onPause() { //保存优先级设置
// TODO Auto-generated method stub
super.onPause();
// Save user preferences. use Editor object to make changes.
SharedPreferences settings = getSharedPreferences(PREF, 0);
    settings.edit()
.putString(PREF_HEIGHT, field_height.getText().toString())
.commit();
}

相关内容