============== 在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一些基础知识
最新推荐文章于 2022-04-08 11:25:12 发布