您的位置:首页 > 移动开发 > Android开发

引用别人的文章:整理出来的一些Android基础知识

2012-06-05 10:20 543 查看
引用别人的文章:整理出来的一些Android基础知识
原文地址:http://www.mars-droid.com/bbs/forum.php?mod=viewthread&tid=4385&extra=page%3D1

内容为引用别人的文章,备自己学习之用.

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

在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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: