整理出来的一些Android基础知识

来源:互联网 发布:思迅软件报价 编辑:程序博客网 时间:2024/05/25 05:37

整理出来的一些Android基础知识:

==============
在application 节点配置首先启动的Activity 节点

Xml代码  收藏代码
  1. <activity android:name=".HelloActivity" android:label="@string/app_name">  
  2.             <intent-filter>  
  3.                 <action android:name="android.intent.action.MAIN" />  
  4.                 <category android:name="android.intent.category.LAUNCHER" />  
  5.             </intent-filter>  
  6. </activity>  

 
=============
获取当前屏幕的宽和高

Java代码  收藏代码
  1. WindowManager manager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);  
  2.  Display display = manager.getDefaultDisplay();  
  3.  Display display = manager.getDefaultDisplay();  
  4.  this.screen_width = display.getWidth();  
  5.  this.screen_height = display.getHeight();  

 

=============
  win7 磨砂效果

Java代码  收藏代码
  1. Window window = dialog.getWindow();  
  2. window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,  
  3. WindowManager.LayoutParams.FLAG_BLUR_BEHIND);  

 

=============

  设置屏幕默认为横屏

Java代码  收藏代码
  1. android:screenOrientation="landscape"   

   设置屏幕默认为竖屏

Java代码  收藏代码
  1. android:screenOrientation="portrait"   

 

=============
  去除窗体的标题栏

Java代码  收藏代码
  1. this.requestWindowFeature(Window.FEATURE_NO_TITLE);  

      
去掉任务栏

Java代码  收藏代码
  1. this.getWindow().setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);  

        
这个方法必须放在以上两个方法之后

Java代码  收藏代码
  1. 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

Java代码  收藏代码
  1. Intent inetnt1 = new Intent(Activity01.this,Activity2.calss)  
  2. stratActivity(intent1);  
  3. startActivityForResult(intent1,REQUEST_CODE);  

 

startActivityForResult() 这个方法启动intent,并且挡墙新的Activity 运行结束的时候,还必须执行原Activity 里面的回调函数onActivityResult().

================
关于权限问题

===============
指定layout

Java代码  收藏代码
  1. LayoutInflater factory = LayoutInflater.from(NotePad.this);  

 
==================
响应手机返回按钮事件

Java代码  收藏代码
  1. @Override  
  2. public void onBackPressed() {  
  3.   AlertDialog.Builder builder = new AlertDialog.Builder(ManagerView.this);  
  4.   builder.setMessage("是否退出程序");  
  5.   builder.setPositiveButton("确定"new DialogInterface.OnClickListener() {  
  6.    @Override  
  7.    public void onClick(DialogInterface dialog, int which) {  
  8.     ManagerView.this.finish();  
  9.    }  
  10.   });  
  11.   builder.show();  
  12.   // super.onBackPressed();  
  13. }  

 ================
响应MENU按钮创建菜单

Java代码  收藏代码
  1. @Override  
  2. public boolean onCreateOptionsMenu(Menu menu) {  
  3.   // MenuItem item_1 = menu.add(0, 0, 0, "1");  
  4.   // item_1.setOnMenuItemClickListener(new ItemClickListenerClass());  
  5.   MenuItem item_0 = menu.add(000"EXIT");  
  6.   item_0.setOnMenuItemClickListener(new ItemClickListenerClass());  
  7.   MenuItem item_1 = menu.add(011"About");  
  8.   item_1.setOnMenuItemClickListener(new ItemClickListenerClass());  
  9.   MenuItem item_2 = menu.add(022"UPdate");  
  10.   item_1.setOnMenuItemClickListener(new ItemClickListenerClass());  
  11.   MenuItem item_3 = menu.add(033"Connect US");  
  12.   item_1.setOnMenuItemClickListener(new ItemClickListenerClass());  
  13.   return super.onCreateOptionsMenu(menu);  
  14. }  

 =================
上下文菜单
创建

Java代码  收藏代码
  1. @Override  
  2. public void onCreateContextMenu(ContextMenu menu, View v,  
  3.    ContextMenuInfo menuInfo) {  
  4.   menu.setHeaderTitle("选项");  
  5.   menu.setHeaderIcon(R.drawable.menu_set);  
  6.     
  7.   menu.add(000"新建记事项");  
  8.   menu.add(011"保存记事");  
  9.   menu.add(022"清空当前");  
  10.   menu.add(033"查看记事");  
  11.     
  12.   super.onCreateContextMenu(menu, v, menuInfo);  
  13. }  
  14. /** 
  15.   * 上下文菜单的响应事件 
  16.   */  
  17. /* 
  18.   * (non-Javadoc) 
  19.   *  
  20.   * @see android.app.Activity#onContextItemSelected(android.view.MenuItem) 
  21.   */  
  22. @Override  
  23. public boolean onContextItemSelected(MenuItem item) {  
  24.   AdapterContextMenuInfo info = (AdapterContextMenuInfo) item  
  25.     .getMenuInfo();  
  26.   switch (item.getItemId()) {  
  27.   case 0:  
  28.    break;  
  29.     
  30. }  
  31.   return super.onContextItemSelected(item);  
  32. }  

 ==================
对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 这个内部类来构造,可以直接调用构造函数


=================
设置显示字体为系统里面的字体

Java代码  收藏代码
  1. Android:textAppearance="?Android:attr/textApperanceMedium"   

 
====================

Java代码  收藏代码
  1. public View getView(int position, View convertView, ViewGroup parent) {  
  2. ViewHolder holder;  
  3. if (convertView == null) {  
  4. convertView = mInflater.inflate(R.layout.list_item_icon_text, null);  
  5. holder = new ViewHolder();  
  6. holder.text = (TextView) convertView.findViewById(R.id.text);  
  7. holder.icon = (ImageView) convertView.findViewById(R.id.icon);  
  8. convertView.setTag(holder);  
  9. else {  
  10. holder = (ViewHolder) convertView.getTag();  
  11. }  
  12. holder.text.setText(DATA[position]);  
  13. holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);  
  14. return convertView;  
  15. }  
  16.   
  17. static class ViewHolder {  
  18. TextView text;  
  19. ImageView icon;  
  20. }  

 =====================
关于SQLite 数据库的操作
继承SQLiteOpenHelper类新建一个数据库

Java代码  收藏代码
  1. public class DBUtil extends SQLiteOpenHelper {  
  2.   
  3. private static final String SQL_STRING = "create table test_sqlite(_id integer primary key autoincrement,username varchar(40),birthdate date)";  
  4.   
  5. private static final String DB_NAME = "testsqlite.db";  
  6. private static final int DB_VERSION = 1;  
  7.   
  8. /** 
  9.   *  
  10.   * @param context 上下文环境 
  11.   * @param name 创建数据库的文件名 
  12.   * @param factory 游标工厂 
  13.   * @param version 数据库创建的版本 
  14.   */  
  15. public DBUtil(Context context, String name, CursorFactory factory,  
  16.    int version) {  
  17.   super(context, name, factory, version);  
  18.      
  19. }  
  20.   
  21. public DBUtil(Context context) {  
  22.   this(context, DB_NAME, null, DB_VERSION);  
  23.      
  24. }  
  25.   
  26. /** 
  27.   * 创建数据库函数,回调函数,在程序运行中只会调用一次 
  28.   */  
  29. @Override  
  30. public void onCreate(SQLiteDatabase db) {  
  31.   System.out.println("onCreate()............");  
  32.   db.execSQL(SQL_STRING);  
  33.     
  34. }  
  35.   
  36. /** 
  37.   * 更新数据库 
  38.   */  
  39. @Override  
  40. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {  
  41.      
  42.   db.execSQL("drop table if exists testsqlite");  
  43.   onCreate(db);  
  44. }  
  45.   
  46. public void closeDB(SQLiteDatabase db){  
  47.   if(db != null){  
  48.    db.close();  
  49.   }  
  50. }  
  51.   
  52. public void closeCursor(Cursor c){  
  53.   if(c != null){  
  54.    c.close();  
  55.   }  
  56. }  
  57. }  

 

======================
对于SQLite 数据库的基本操作语句:
插入操作:
对数据库中插入一个USERVO 对象

Java代码  收藏代码
  1. public void insertUserVO(UserVO user){  
  2.     
  3.   DBUtil util = new DBUtil(context);  
  4.   // 得到一个可以写的 数据库,执行这个方法后 数据库才真正创建  
  5.   SQLiteDatabase db = util.getWritableDatabase();  
  6.   //ContentValues  一个map类存放键值对,一个键值对 键表示数据库中的列名   
  7.   ContentValues values = new ContentValues();  
  8.   values.put("username",user.getUsername());  
  9.   values.put("birthdate", ConvertDate.datetoString(user.getBirthdate()));  
  10.     
  11.   db.insert("test_sqlite"null, values);  
  12.     
  13.     
  14. }  

 查询操作:

Java代码  收藏代码
  1. public Cursor findAll(){  
  2.   DBUtil util = new DBUtil(context);  
  3.   SQLiteDatabase db = util.getReadableDatabase();  
  4.     
  5.   //查询的列名的string 数组  
  6.   String[] colnames = new String[]{"_id","username","birthdate"};  
  7.     
  8.   String selection = "userid = ? and username=?";  
  9.   String[] selectionArgs = new String[]{"1","saf"};   
  10.   String groupBy = "userid";  
  11.   String having = "userid <10";  
  12.   String orderBy = "userid asc";   
  13.     
  14.   Cursor c = db.query("test_sqlite", colnames, nullnullnullnullnull);  
  15.   while(c.moveToNext()){  
  16.    System.out.println(c.getColumnName(0)+"  "+c.getColumnName(1)+"  "+c.getColumnName(2));  
  17.    System.out.println(c.getInt(0)+"  "+c.getString(1)+"   "+c.getString(2));  
  18.     
  19.   }  
  20.   
  21.   return c;  
  22.     
  23. }  

 

//查询的一些列方法:
-----------
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 限制返回的记录条数
-----------

Java代码  收藏代码
  1. public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy)   

 -----------

Java代码  收藏代码
  1. public Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)   

 -----------

Java代码  收藏代码
  1. public Cursor rawQuery (String sql, String[] selectionArgs)   

-----------
//修改数据的方法

Java代码  收藏代码
  1. public int update (String table, ContentValues values, String whereClause, String[] whereArgs)   

 -----------
//删除数据

Java代码  收藏代码
public int delete (String table, String whereClause, String[] whereArgs) 

原创粉丝点击