android一些基礎知識

==============
在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) 
發佈了32 篇原創文章 · 獲贊 3 · 訪問量 55萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章