============== 在application 節點配置首先啓動的Activity 節點 <activity android:name=".HelloActivity" android:label="@string/app_name"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> ============= 獲取當前屏幕的寬和高 WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE); Display display = manager.getDefaultDisplay(); Display display = manager.getDefaultDisplay(); this.screen_width = display.getWidth(); this.screen_height = display.getHeight(); ============= win7 磨砂效果 Window window = dialog.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND, WindowManager.LayoutParams.FLAG_BLUR_BEHIND); ============= 設置屏幕默認爲橫屏 android:screenOrientation="landscape" 設置屏幕默認爲豎屏 android:screenOrientation="portrait" ============= 去除窗體的標題欄 this.requestWindowFeature(Window.FEATURE_NO_TITLE); 去掉任務欄 this.getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN); 這個方法必須放在以上兩個方法之後 this.setContentView(layoutResID); ================ ContentProvider 使用表的形式來組織數據 各個程序都可以來訪問這個數據 android中的ContentProvider 保存在android.provider中 每個ContentProvider 都有一個uri 提供的增刪改查的函數方法: 主要意義在於提供在不同的程序之間實現數據共享 實現一個CongtentProvider的步驟 1、定義一個CONTENT_URI常量 2、定義一個類,繼承ContenProvider 3、實現query 、insert、 update 、delete、getType 和onCreate方法 4、在AndroidManifest.xml 當中聲明 ================ Activity 之間的跳轉 Activity01 中啓動Activity02 Intent inetnt1 = new Intent(Activity01.this,Activity2.calss) stratActivity(intent1); startActivityForResult(intent1,REQUEST_CODE); startActivityForResult() 這個方法啓動intent,並且擋牆新的Activity 運行結束的時候,還必須執行原Activity 裏面的回調函數onActivityResult(). ================ 關於權限問題 =============== 指定layout LayoutInflater factory = LayoutInflater.from(NotePad.this); ================== 響應手機返回按鈕事件 @Override public void onBackPressed() { AlertDialog.Builder builder = new AlertDialog.Builder(ManagerView.this); builder.setMessage("是否退出程序"); builder.setPositiveButton("確定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { ManagerView.this.finish(); } }); builder.show(); // super.onBackPressed(); } ================ 響應MENU按鈕創建菜單 @Override public boolean onCreateOptionsMenu(Menu menu) { // MenuItem item_1 = menu.add(0, 0, 0, "1"); // item_1.setOnMenuItemClickListener(new ItemClickListenerClass()); MenuItem item_0 = menu.add(0, 0, 0, "EXIT"); item_0.setOnMenuItemClickListener(new ItemClickListenerClass()); MenuItem item_1 = menu.add(0, 1, 1, "About"); item_1.setOnMenuItemClickListener(new ItemClickListenerClass()); MenuItem item_2 = menu.add(0, 2, 2, "UPdate"); item_1.setOnMenuItemClickListener(new ItemClickListenerClass()); MenuItem item_3 = menu.add(0, 3, 3, "Connect US"); item_1.setOnMenuItemClickListener(new ItemClickListenerClass()); return super.onCreateOptionsMenu(menu); } ================= 上下文菜單 創建 @Override public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) { menu.setHeaderTitle("選項"); menu.setHeaderIcon(R.drawable.menu_set); menu.add(0, 0, 0, "新建記事項"); menu.add(0, 1, 1, "保存記事"); menu.add(0, 2, 2, "清空當前"); menu.add(0, 3, 3, "查看記事"); super.onCreateContextMenu(menu, v, menuInfo); } /** * 上下文菜單的響應事件 */ /* * (non-Javadoc) * * @see android.app.Activity#onContextItemSelected(android.view.MenuItem) */ @Override public boolean onContextItemSelected(MenuItem item) { AdapterContextMenuInfo info = (AdapterContextMenuInfo) item .getMenuInfo(); switch (item.getItemId()) { case 0: break; } return super.onContextItemSelected(item); } ================== 對listview 中我們可以調用Android中默認的佈局模式 Android.R.layout.simple_list_item_1 每一項只有一個textview Android.R.layout.simple_list_item_2 每一項有兩個TextView Android.R.layout.simple_list_item_single_choice 每一項有一個TextView 但是這個項可以被選擇 ================= Dialog 類是繼承的是 object progressDialog 中不需要Builder 這個內部類來構造,可以直接調用構造函數 ================= 設置顯示字體爲系統裏面的字體 Android:textAppearance="?Android:attr/textApperanceMedium" ==================== public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null) { convertView = mInflater.inflate(R.layout.list_item_icon_text, null); holder = new ViewHolder(); holder.text = (TextView) convertView.findViewById(R.id.text); holder.icon = (ImageView) convertView.findViewById(R.id.icon); convertView.setTag(holder); } else { holder = (ViewHolder) convertView.getTag(); } holder.text.setText(DATA[position]); holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2); return convertView; } static class ViewHolder { TextView text; ImageView icon; } ===================== 關於SQLite 數據庫的操作 繼承SQLiteOpenHelper類新建一個數據庫 public class DBUtil extends SQLiteOpenHelper { private static final String SQL_STRING = "create table test_sqlite(_id integer primary key autoincrement,username varchar(40),birthdate date)"; private static final String DB_NAME = "testsqlite.db"; private static final int DB_VERSION = 1; /** * * @param context 上下文環境 * @param name 創建數據庫的文件名 * @param factory 遊標工廠 * @param version 數據庫創建的版本 */ public DBUtil(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } public DBUtil(Context context) { this(context, DB_NAME, null, DB_VERSION); } /** * 創建數據庫函數,回調函數,在程序運行中只會調用一次 */ @Override public void onCreate(SQLiteDatabase db) { System.out.println("onCreate()............"); db.execSQL(SQL_STRING); } /** * 更新數據庫 */ @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("drop table if exists testsqlite"); onCreate(db); } public void closeDB(SQLiteDatabase db){ if(db != null){ db.close(); } } public void closeCursor(Cursor c){ if(c != null){ c.close(); } } } ====================== 對於SQLite 數據庫的基本操作語句: 插入操作: 對數據庫中插入一個USERVO 對象 public void insertUserVO(UserVO user){ DBUtil util = new DBUtil(context); // 得到一個可以寫的 數據庫,執行這個方法後 數據庫才真正創建 SQLiteDatabase db = util.getWritableDatabase(); //ContentValues 一個map類存放鍵值對,一個鍵值對 鍵表示數據庫中的列名 ContentValues values = new ContentValues(); values.put("username",user.getUsername()); values.put("birthdate", ConvertDate.datetoString(user.getBirthdate())); db.insert("test_sqlite", null, values); } 查詢操作: public Cursor findAll(){ DBUtil util = new DBUtil(context); SQLiteDatabase db = util.getReadableDatabase(); //查詢的列名的string 數組 String[] colnames = new String[]{"_id","username","birthdate"}; String selection = "userid = ? and username=?"; String[] selectionArgs = new String[]{"1","saf"}; String groupBy = "userid"; String having = "userid <10"; String orderBy = "userid asc"; Cursor c = db.query("test_sqlite", colnames, null, null, null, null, null); while(c.moveToNext()){ System.out.println(c.getColumnName(0)+" "+c.getColumnName(1)+" "+c.getColumnName(2)); System.out.println(c.getInt(0)+" "+c.getString(1)+" "+c.getString(2)); } return c; } //查詢的一些列方法: ----------- public Cursor query (boolean distinct, String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) distinct: true 表示去掉重複的行 table :表名 colums :查詢的列的string 數組 selection:表示查詢的條件 包含關鍵字 where 類似 selection = “name=?”; selectionArgs :表示 填充的是 ? 代表的值的一個string數組 limit 限制返回的記錄條數 ----------- public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy) ----------- public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit) ----------- public Cursor rawQuery (String sql, String[] selectionArgs) ----------- //修改數據的方法 public int update (String table, ContentValues values, String whereClause, String[] whereArgs) ----------- //刪除數據 public int delete (String table, String whereClause, String[] whereArgs) |
android一些基礎知識
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.