android简单例子
⑴ 求一个 android 数据库操作 的小例子(增 删,查看)
package com.example.androiddbtest;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class SqliteOpenHelperTest extends SQLiteOpenHelper {
public SqliteOpenHelperTest(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
@Override
public void onCreate(SQLiteDatabase arg0) {
// TODO 创建数据库后,对数据库的操作
arg0.execSQL("CREATE TABLE mytable (_id INTEGER , name varchar(20));");
Log.i("sqlite", "创建表");
}
/**
* // TODO 更改数据库版本的操作
* arg1 旧版本号
* arg2 新版本号
*/
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
// TODO Auto-generated method stub
Log.i("sqlite", "更新数据库");
}
@Override
public void onOpen(SQLiteDatabase db) {
super.onOpen(db);
// TODO 每次成功打开数据库后首先被执行
}
}
package com.example.androiddbtest;
import android.app.Activity;
import android.content.ContentValues;
import android.content.Intent;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;
public class SQLiteTestActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sqlite_mian);
Button bt1 = (Button) findViewById(R.id.sqbtn1);
Button bt2 = (Button) findViewById(R.id.sqbtn2);
Button bt4 = (Button) findViewById(R.id.sqbtn4);
Button bt5 = (Button) findViewById(R.id.sqbtn5);
Button bt3 = (Button) findViewById(R.id.sqbtn3);
bt1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
Log.i("sqlite", "创建testdb");
SqliteOpenHelperTest soh = new SqliteOpenHelperTest(SQLiteTestActivity.this, "mytestdb", null, 1);
SQLiteDatabase db = soh.getWritableDatabase();
db.execSQL("insert into mytable(_id,name) values(2,'bbbbb')");
ContentValues cv = new ContentValues();
cv.put("_id", 1);
cv.put("name", "aaaaa");
db.insert("mytable", null, cv);
db.close();
if (db != null) {
db.close();
}
Toast.makeText(SQLiteTestActivity.this, "存取信息成功!", Toast.LENGTH_SHORT)
.show();
}
});
bt4.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
SqliteOpenHelperTest soh = new SqliteOpenHelperTest(
SQLiteTestActivity.this, "mytestdb", null, 1);
SQLiteDatabase db = soh.getWritableDatabase();
ContentValues cv = new ContentValues();
cv.put("name", "dddddddddddddd");
db.update("mytable", cv, "_id=?", new String[] { "2" });
db.close();
Toast.makeText(SQLiteTestActivity.this, "修改信息成功!", Toast.LENGTH_SHORT)
.show();
}
});
bt2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
SqliteOpenHelperTest soh = new SqliteOpenHelperTest(
SQLiteTestActivity.this, "mytestdb", null, 1);
SQLiteDatabase db = soh.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from mytable where _id=?",new String[] { "2" });
int count = cursor.getColumnCount();
Toast.makeText(SQLiteTestActivity.this,"数据总共:" + count , Toast.LENGTH_SHORT).show();
while (cursor.moveToNext()) {
Toast.makeText(SQLiteTestActivity.this,
"_id:" + cursor.getInt(0) + "。name:" + cursor.getString(1),Toast.LENGTH_SHORT).show();
}
if (soh != null) {
soh.close();
}
}
});
bt5.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
SQLiteTestActivity.this.startActivity(new Intent(SQLiteTestActivity.this,
SqliteListViewActivity.class));
}
});
bt3.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
SqliteOpenHelperTest soh = new SqliteOpenHelperTest(
SQLiteTestActivity.this, "mytestdb", null, 1);
SQLiteDatabase db = soh.getWritableDatabase();
db.delete("mytable", "_id=?", new String[] { "1" });
db.close();
Toast.makeText(SQLiteTestActivity.this, "清除id为1的信息成功!",
Toast.LENGTH_SHORT).show();
}
});
}
}
package com.example.androiddbtest;
import android.app.ListActivity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.os.Bundle;
import android.support.v4.widget.SimpleCursorAdapter;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class SqliteListViewActivity extends ListActivity {
private ListView listView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.sqlitelistview_main);
SqliteOpenHelperTest soh = new SqliteOpenHelperTest(
SqliteListViewActivity.this, "mytestdb", null, 1);
SQLiteDatabase db = soh.getReadableDatabase();
Cursor cursor = db.rawQuery("select * from mytable where _id=?",new String[] { "2" });
SimpleCursorAdapter adapter = new SimpleCursorAdapter(
SqliteListViewActivity.this,android.R.layout.simple_list_item_2,
cursor, new String[] {"_id", "name" }, new int[] { android.R.id.text1,android.R.id.text2 }, 0);
ListView listView = (ListView) findViewById(android.R.id.list); listView.setAdapter(adapter);
listView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
long arg3) {
SqliteListViewActivity.this.listView = (ListView) arg0;
ListView templist = (ListView) arg0;
View mView = templist.getChildAt(arg2);
TextView t1 = (TextView) mView.findViewById(android.R.id.text1);
TextView t2 = (TextView) mView.findViewById(android.R.id.text2);
String mytitle = t1.getText().toString();
String mycontent = t2.getText().toString();
Toast.makeText(
SqliteListViewActivity.this,
"项目被点击~~~" + mytitle + "~~~" + mycontent
+ "~~~" + arg2, Toast.LENGTH_SHORT).show();
}
});
// 添加长按点击
listView.(new OnCreateContextMenuListener() {
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
menu.setHeaderTitle("确定删除?");
menu.add(0, 0, 0, "OK");
menu.add(0, 1, 0, "Cancel");
Toast.makeText(SqliteListViewActivity.this,"长按点击~~~", Toast.LENGTH_SHORT).show();
}
});
}
@Override
public boolean onContextItemSelected(MenuItem item) {
//ContextMenuInfo menuInfo = (ContextMenuInfo) item.getMenuInfo();
AdapterView.AdapterContextMenuInfo info = (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
int id = (int) info.id;// 这里的info.id对应的就是数据库中_id的值
switch (item.getItemId()) {
case 0:
ListView templist = listView;
View mView = templist.getChildAt(id);
TextView t1 = (TextView) mView.findViewById(android.R.id.text1);
TextView t2 = (TextView) mView.findViewById(android.R.id.text2);
String mytitle = t1.getText().toString();
String mycontent = t2.getText().toString();
Toast.makeText(
SqliteListViewActivity.this,
"onContextItemSelected~~~" + mytitle + "~~~" + mycontent , Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(
SqliteListViewActivity.this, id +
"~~~选择了取消", Toast.LENGTH_SHORT).show();
break;
}
return super.onContextItemSelected(item);
}
}
res\layout 下的xml
sqlite_mian.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<Button
android:id="@+id/sqbtn1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="存取信息" />
<Button
android:id="@+id/sqbtn4"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="修改信息" />
<Button
android:id="@+id/sqbtn2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="读取信息" />
<Button
android:id="@+id/sqbtn5"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="展示信息" />
<Button
android:id="@+id/sqbtn3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="清除信息" />
</LinearLayout>
sqlitelistview_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<ListView
android:id="@id/android:list"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<TextView
android:id="@id/android:empty"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="NO DATA" />
</LinearLayout>
AndroidManifest.xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.androiddbtest"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="15" />
<!-- 在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".SQLiteTestActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".SqliteListViewActivity" >
</activity>
</application>
</manifest>
其他的strings.xml这类的,你自己看着配配吧,没啥东西
⑵ android 声控游戏怎么开发的 ,有什么简单的例子没
你好!
一般都是做音量大小识别来进行控制
你可以看看Android中录音的那几个类
希望对你有所帮助,望采纳。
⑶ Android开发中用View做一个最简单的显示图片的例子,只显示图片,简短的!谢谢了!
这个很简单!源代码发给你!
⑷ 如何做好Android的开发
开发人员应当在学习并深入了解Android之后,在自己的软件中,将Android的优势发挥出来,同时通过一些手段去弥补Android 本身的缺陷或不足。下面来看一下Android拥有的特点吧:
与硬件交互非常方便,包括摄像头、GPS 等,都可以简单的操作。
拥有自己的运行时和虚拟机,优秀的内存管理能力。
提供丰富的界面控件供开发者使用,允许可视化开发,并保证Android平台下的应用程序界面一致。
提供轻量级的进程间通信机制。
支持无界面的后台服务类应用程序。
支持高效、快速的数据存取方式。
在这些特性的支持下,试图在Android下开发一个应用不会太过困难。事实上,一个稍有 java经验的开发人员,都可以快速的上手进行 Android的开发。而开发的核心,一直以来也是围绕着Android手机几个大的特点来进行的,其中就包括了触摸屏、摄像头、GPS模块、互联网功能、语音输入、Google账户等。需要说的是,如果一位 J2ME 工程师想转行做Android,那么他将付出的代价比J2SE或J2EE工程师要大得多。毕竟Android所支持的是基本完整的J2SE的子集,反过来再看J2ME就会觉得它的功能太弱了。
除了Java外,还有许多语言支持Android 的开发,比较为人所熟知的有Scala,而作为 Android本身的底层语言,C/C++的作用也完全不可忽视。而目前的开源社区内,已经有一些牛人在尝试让更多的语言可以开发Android应用。比较有代表性的可能是Koushik Dutta,他已经解决了在Mono平台下,让Dalvik调用Mono 代码的问题。或许在不久的将来,.NET 下的所有语言,都有可能借助Mono跑在Android上,这是一件值得让人期待的事情。
语言已不是问题,那还有什么会成为问题?也许很多人会说“经验”。诚然,经验决定了一位开发人员能否快速地、流畅地完成开发工作,也决定了软件的鲁棒性,Bug的数量、等级和修正问题的返工次数。不过我认为,这些都不重要,哪怕是一个 Android 行业的新人,一边查询文档一边做开发,虽然效率会很低,但是一样能把项目做完。在 Android 下,开发技术几乎是没有瓶颈的。那么瓶颈在哪里呢?事实上,在用过很多软件后,就会发现,有很多软件并不好用。很多用户不愿意用某个软件,也并不是因为软件没有技术含量或是满足不了需求,原因很简单,就是不好用。
用户体验是凌驾于技术之上的,可以说,优秀的用户体验将可以起到事半功倍的效果,在一堆同类的软件中,下载量最大的,一定是让用户用着感觉最舒服的,哪怕它的功能并不比其他的产品出色,甚至略差一些。我见过很多开发人员,他们视技术为己任,一心只钻研技术,认为技术出色的软件,会受到用户的好评,甚至在一个手机游戏中,加入各种华丽炫目的3D效果。这些固然都不错,但是真正的用户却不会喜爱它们。在移动应用中,简洁明快才是用户希望看到的。试想一下,当用户在手机上玩一个RPG游戏,并被华丽的3D效果充斥了整个界面,那么他将完全无法着手进行下一个动作。诚然,华丽的画面是很容易吸引人,但是在这种华丽的背后,却会直接把用户和开发者自己领入一条深渊,再也无法回头,最终的结果就是,用户完全舍弃该款游戏,开发者或运营商也完全赚不到钱。
在移动平台开发的过程中,用户体验已经成为首要大事,只有聚焦在用户的设计,才有可能被用户所接受。下面来看一些典型的例子。
左图是经典的Windows Mobile 6.1的界面,从Windows Mobile推出的那天起,这个界面就一直被宣传成内容充实,包含常用所有功能的入口,非常贴合用户的实际需求。也许在当时,这样的界面确实能满足一定的需求,但是到了现在,这样的设计只能说是远离用户。每一项的高度都过小,因此需要使用笔来点击,或是使用指甲。位于右下角的三个图标,或许用指甲都很难点到,使用笔即多占用用户的一只手,体验是直线下降的。在用户希望连耳朵都解放的现在,多占用一只手是什么概念,这就意味着用户乘车时没有办法握紧扶手,或者没有办法拎着自己的包。另外,在手机操作时,拥有一只空闲着的手,就能有更多机会处理突发事件,占用用户的两只手实在是不应该的。可以说Windows Mobile的用户体验是非常差劲的,幸好微软在新的Windows Phone 7中,对界面做了巨大的改进,没有再犯过去的错误。
再来看看Android是如何做的,这个界面看起来简洁明了,和上面的Windows Mobile相比,可以说是毫不出彩,甚至在有些人的眼里,这个界面很丑陋。但它却是相当好用的,图标很大,图标的间距也很大。这就决定了用户可以使用指腹去进行点击的操作,并且点击的范围可以比较大,降低了点错的几率。
虽然屏幕点击的方式一定程度上也和屏幕的材质有关,比如电阻屏只能用笔或指甲,而电容屏允许使用指腹,有一些还可以支持多点触摸。对于普通用户来说,使用指腹比使用指甲显得更为常见,原因很简单,如果图标很大,那么用户会不自觉的使用指腹去点击,而如果图标很小,那么用户会屈起手指然后用指甲去戳屏幕。这个“屈起手指”的动作不能被大部分的用户所接受。因此电容屏会渐渐流行,而电阻屏会渐渐被淘汰,这完全是根据用户的体验,优胜劣汰,是一件非常符合进化论的事。
用户体验还不仅仅是界面上的那些事,作为手机来说,每一个特点都将成为用户体验可以挖掘的一部分。比如说是否有键盘、是否支持多点触摸等。有键盘的手机与无键盘的手机,用户在执机时用的手势必然不同,一个着重点在机身下半部分,即键盘上;而另一个着重点在整个屏幕上,换言之,手指可能在屏幕的任何一个位置活动。针对设备的具体情况来对应用进行设计也是很有必要的,目前Google为Android设计的按屏幕大小自动切换布局方式的框架非常有用,它改变了以往在程序的设计过程中,需要为每一种设备单独编译一个版本,或是仅对不同的屏幕做简单拉伸的情况。另外,在设计中,还需要考虑实际操作体验,比如放大一张图片,是使用放大按钮,还是使用多点触摸。这两种做法都很常见,但是在一个有此需求的应用中,却不能单独的使用某一种。比较好的做法是,在程序代码中,判断设备是否支持多点触摸,若不支持,可以显示一个放大按钮,而对于支持的,则在应用第一次启动时,弹出一个Toast提示,告诉用户可以多点触摸从而放大图片。
下面再说说应用界面布局的问题,来看下面两个截图。
这两个应用同为Android下的游戏机模拟器,上面的图是PS模拟器,可以看到虚拟按键的布局有些奇怪,特别是 L和R,一上一下非常不习惯。而右面的是GBA模拟器,可以看到它的按键中规中矩,用户马上就可以上手了。但是,从上手的角度来说,GBA模拟器的确简单,但是从实用的角度来说,PS模拟器做得更好。为什么呢?原因很简单,PS模拟器利用到了整个屏幕,而且虚拟按键的布局,防止了两只手打架,也防止了屏幕下半部分由于手指的原因完全不可见的问题。通过一段时间的习惯,PS 模拟器就可以被玩得很溜。而再看GBA模拟器,只利用到了一半的屏幕不说,而且还是纵向的,双手操作时,两只手很容易打架,相互干扰,要玩一些动作性稍强的游戏几乎不可能。虽然看起来直观易懂,但是这样的UI,是会被用户所舍弃的。
在移动平台上,到目前为止,用户依然没有固定的操作习惯,而软件的开发人员要做的事情,就是把用户往一个简单、明快的操作体验上引导,使他们更快的学会使用软件,并且让他们习惯、擅长某一种或几种操作。从某种意义上来说,苹果的设计人员手册已经很好的解决了问题,iPad已经做到了中老年人也可以轻松上手,甚至连猫都会玩。但是至少目前为止,还没有见到适用于Android的设计手册,开发人员或是软件厂商也都各按自己的理解去进行软件的设计,用户也被迫在使用不同的软件时,适应不同的风格。
在未来为期不短的一段时间内,Android上应用程序的用户体验将成为一个主要的研究点,特别是游戏类应用。由于Android上的某些限制,开发人员较难实现像PSP游戏那样的华丽效果,因此只能够在游戏本身的游戏性上下足工夫。当然了,等Android手机的性能再次大幅提升,电池容量再大幅提升后,可能会出现可以匹敌PSP游戏的华丽游戏,只是目前不应当过分考虑这些。
在我以前的一些文章也曾提到过,为移动平台做开发,应该尽可能的考虑程序的执行效率而不是架构,因为移动平台本身通常不会有多好的配置,在有限的配置下实现性能最佳化是非常重要的。从另一种角度上说,iPhone 能够用较低的配置来实现整机流畅运作,也是得益于较为严格地针对性优化,把硬件平台的性能完全发挥出来,这样做得到的结果是,iPhone的整体性能,看起来反而比一些更高配置的手机要好一些。
最后,再简单地说一下Android的开发与其他平台的开发有什么异同。我们知道不同的开发方式将对最终的结果产生不同的影响。在以往的经验中,各厂家的开发工具,都在往可视化方向发展,比如说微软的 Visual Studio,一代比一代强大,可视化程度越来越高。而苹果的Xcode也是一样,它建议用户完全使用可视化的方案来解决一个应用。这些固然很好,但是带来的问题也不小。举个简单的例子,有一个 Windows Mobile 的应用,上面有一个 ListBox,而你正试图为该 ListBox 添加一个图标,并试图按每一项的内容限定来改变文字颜色。能做到吗?当然能,但是过程却不简单,你必须经历复杂的自绘才能实现这一点。这也是常规的RAD开发中普遍遇到的问题,即开发人员不能方便地控制到应用的每一个细节。开发框架对API的封装在某种程度上提高了开发的效率,但是另一种程度上,它屏蔽了太多的细节,而这些细节有可能就是开发人员所需要的。
而Android虽然也拥有可视的开发环境,但是它非常弱,第三方的RAD方案迄今为止也依然显得虚弱无力,对于用惯了微软等公司出品的高级RAD环境的人来说,可能会充满了无奈,也可能充满了鄙视,这种可视化算什么呢?如果仅仅从开发人员的角度来看,有利也有弊,弊端很显然是开发效率不够高,而事实上,由于Android采用Java语言来进行开发,其开发效率本身就不会太高。而利的部分,可能是会被很多高级工程师所喜爱的,因为它是牺牲开发效率,来换取最大的可定制性的一个典范。也许有一些刚开始学习Android开发的朋友会觉得制作界面有种种的不便,但是只要深入地学习下去,就会觉得Android的界面实现方式是非常领先的。同样举出上面ListBox的例子,在Android下,就可以通过一组短小精悍的代码来自定义ListItem和相关Adapter以实现。
我想优秀的开发人员是应该完全放弃RAD的,在目前的环境下,RAD几乎没有什么作为,反而会成为应用分层的一个巨大的绊脚石。在RAD的环境下,要求一位开发人员对软件的每一个部分都面面俱到,这怎么可能呢?比如说软件界面就是应该交由UI专员去设计,数据库部分也应该交由相关的负责人去做,完全不可能由开发人员从头到尾一个人搞定。如果哪个老板真的雇用了一位超级开发人员来包办一切,那么除非那个人拥有100年的工作经验,不然的话项目做死就是活该。我想Android的开发框架已经很好地说明了这个问题,程序资源(包括图片、字符串、其他的外部数据等)和代码完全分离,各部分人员各司其职,完成整个项目,每个部分的人员都不会有太大的压力。并且,由于Android采用XML对界面进行描述,使得对界面的更换也变得容易,设计师可以设计出多套界面,不论是用于UI方案评估或是在实际应用中更换界面风格都很方便。这也是其他移动平台的开发所不具备的。
⑸ Android中: ContentValues 具体解释 最好有个简单的例子
DBhelper mydb =new DBhelper(getApplicationContext());
ContentValues cv =new ContentValues();
cv.put("name", et1.getText().toString());
cv.put("url", et2.getText().toString());
cv.put("desc",et3.getText().toString());
mydb.insert(cv);
例如数据库的操作的时候需要ContentValues。
DBhelper是一个自定义的数据库帮助class。
⑹ android的例子
android:layout_width="fill_parent"android:layout_height="fill_parent"
xmlns:android="schemas.android/apk/res/android"
android:orientation="vertical">
android:layout_width="fill_parent">
android:layout_width="wrap_content"android:layout_height="wrap_content">
android:layout_height="wrap_content"android:text="播放音频">
android:layout_height="wrap_content"android:text="停止播放">
android:layout_width="fill_parent">
android:layout_width="fill_parent"android:layout_height="250px">
android:layout_width="wrap_content"android:layout_height="wrap_content">
android:layout_height="wrap_content"android:id="@+id/Button03"
android:text="播放视频">
android:layout_height="wrap_content"android:text="停止播放"android:id="@+id/Button04">
packagecom.testMedia;
importjava.io.IOException;
importjava.util.Timer;
importjava.util.TimerTask;
importandroid.app.Activity;
importandroid.media.AudioManager;
importandroid.media.MediaPlayer;
importandroid.os.Bundle;
importandroid.view.SurfaceHolder;
importandroid.view.SurfaceView;
importandroid.view.View;
importandroid.widget.Button;
importandroid.widget.SeekBar;
importandroid.widget.Toast;
{
/**.*/
privateSeekBarskb_audio=null;
privateButtonbtn_start_audio=null;
privateButtonbtn_stop_audio=null;
privateSeekBarskb_video=null;
privateButtonbtn_start_video=null;
privateButtonbtn_stop_video=null;
privateSurfaceViewsurfaceView;
⑺ 如何自学 Android 编程
如果你已经确定了学习Android的目标,那么,应该提前做好哪些工作、先打下哪些基础呢?
首先,你最好先熟悉一门编程语言,现在大学里面和计算机相关的专业甚至理工类专业一般都会开设C语言课程,只是很多同学在大学期间并没有好好学习,如果对它掌握的不太好或者很久没用了,建议先从将其好好复习一下,将其基本的语法再好好回顾一下,最好能搭建一个环境来运行、调试它。如果没有学过,不妨也提前学习一下,可以参考清华大学出版社出版的谭浩强老师的《C语言程序设计》,推荐这本书的原因,一是它已经经过了多年的考验,应该说还是比较严谨的;其次就是大部分的高校所开设的C语言使用的教材都是用它作为教材,因此无论是购买还是借阅,都容易找到。另外,华清远见网站上也有一些这方面的教学视频,可以结合来看。
其次,如果你后续有志于游戏方面的开发,你最好具备一定的数据结构和算法基础知识。这一点是我在华清远见的讲台上,给学员们坚持强调的。虽然现代的高级编程语言中,其类库中已经帮我们实现了大部分的数据结构,一般情况下,我们直接使用即可。但如果你能对其原理有所了解,当你需要在这些数据结构和算法中间的时候,你可以能更加的清楚到底应该选择那个数据结构或者算法。另外,在图形图像处理上面,线性代数的作用也非常重要,如果能掌握一点这方面的基础知识,无疑也会在后续的学习中如虎添翼。举个例子,在Android中,有一个用于图形变换的类Matrix,用起来稍有点难。其实它的理论基础就是线性代数中的矩阵,如果你了解矩阵的基本算法,这个类的使用可以说就易如反掌了。
第三,因为Android应用的开发语言用的是Java语言,并且在Android中也用到了Java核心类库的大量的类,因此,在学习Android开发之前,可以先把Java基本语法和Java SE的基础类库好好学习一下,例如:Java中的IO、网络、线程、List、Map、Tree等数据结构。现在的大学里也有不少的院系开设了Java课程,教材和图书也非常丰富,如果你所在的院系没有开设,也可以从其他开设了这个专业的院系同学那里借阅一下,并认真完成他们所布置的作业,争取自己能动手编写出一些简单的Java应用。如果自己购买图书,可以购买《Java核心技术,卷1(原书第8版)》这本图书来学习。
第四,因为在Android中,会用到数据库来存储数据,因此,也可以提前对数据库知识做相关的储备。在Android所使用的SQLite中,其语法是遵循标准的SQL-92语法的(当然和企业级数据库如Oracle等比较,功能上要弱很多),有条件的话,最好也能安装一个数据库来进行实际的操作。从易用性和资料完备性来说,建议大家使用Microsoft SQL Server或者MySQL就可以了。它们都是我们学习数据库的好平台。另外,如果曾经学习过数据库原理或者关系代数,那么,在学习数据库的过程中,也可以再好好地复习一下这些基础知识,对我们理解数据库大有裨益。
最后,我们结合华清远见3G学院的“3G Android系统开发就业培训班课程体系”来谈谈Android开发的学习方法。
Android是一个比较庞大的体系,从底层的Linux内核到上层的应用层,各部分的内容跨度也比较大。因此,一个好的学习方法对我们学习Android开发很重要。因此在华清远见的课程体系设计中采取了循序渐进、将大目标分解成多个小目标,逐步达成对Android开发从应用层到底层系统及驱动开发全面掌握的目的。
例如,可以先从Android的应用开发开始,等到对应用掌握的比较熟悉了,开始慢慢阅读一些Android 应用框架层的源代码,然后再渐渐往下去了解Android的JNI、Libraries、Dalvik虚拟机、HAL层、硬件驱动、Linux内核、ARM技术体系架构等,虽然近期Intel宣称要让Intel芯片支持Android系统,但在可预见的时期内,在移动设备上,ARM的优势应该还是不可撼动的。
具体来说,可以先通过在开发板上构建一个自己的Android系统,了解Android系统的整体架构和启动过程,由此先对Android有一个初步的了解;接下来,学习Android的应用开发,在这里可以先学习Android的几个主要组件、UI组件,先对Android应用开发有一个感性认识。在能够熟练搭建用户界面后,再逐渐来丰富应用的功能,例如:加上事件处理,使其能够和用户互动;加上数据存储功能;加上联网功能等等。在学完应用后,在此基础上来学习游戏编程,先了解游戏设计的基本思路,然后开始从小的游戏、小的模块开始做起,到最后能完成一个类似于现在热门的《捕鱼达人》这样的游戏。在掌握了这些应用层级的内容后,可以去了解如何在Android应用中通过JNI去调用C/C++的接口,再往下学习Linux的内核和驱动开发如字符设备驱动、Flash设备驱动、网络设备驱动等等;再在此基础上,去学习Android驱动开发、HAL(硬件抽象层)开发、ARM体系架构和指令等等内容,这样,Android开发的整个体系就都贯穿起来了。
当然,因为时间有限,而底层部分的内容比较庞杂,因此,在真正去做这部分工作之前,我们只需要对其基本原理有所了解,做好相关知识的储备,能够根据老师的指导来完成相关的实验。这样在后续的工作中,就可以方便的往这方面发展,让自己的事业更上一层楼。
⑻ android 的try catch 具体能处理什么问题 简单介绍 给个简单的例子
如果没有try的话,出现异常会导致程序崩溃。
try可以保证程序的正常运行下去
try{
int i = 1/0;
}catch(Exception e){
........
}
计算的话,如果除数为0,则会报错,如果没有try的话,程序直接崩溃。用try的话,则可以让程序运行下去,并且输出为什么出错!
try的话,配合log4j使用会对程序的日后维护帮助很大。
PS:不是原创,但希望能帮助你,我也是android新手,共同学习
⑼ 安卓开发,请给个由一个按钮触发另一个activity的简单例子让我学习学习!
private Button mButton2;
mButton2=(Button)findViewById(R.id.register);
mButton2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
Intent i=new Intent(Login.this,Register.class);
startActivity(i);
}
});
这样就是个简单的跳转到register这个activity的方法
另一个回答者,他的答案貌似使用了extra传值,不过他这个extra传值只有 主页面的onActivityResult,另一个页面将数据放入extra的方法没有写
⑽ android 代码布局简单的例子
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(LinearLayout.VERTICAL);
linearLayout.setLayoutParams(new LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
linearLayout.setGravity(Gravity.CENTER_HORIZONTAL);
ImageButton news = new ImageButton(context);
news.setId(85);
news.setOnClickListener(this);
news.setBackgroundResource(R.drawable.news);
news.setLayoutParams(new LayoutParams(33, 33));
linearLayout.addView(news);
这段代码就动态把一个ImageButton添加到一个LinearLayout中去了~
同时设定了VIEW的长宽背景布局方式等~
同理,删除掉使用的方法例如:
XXX.removeViewAt(index)
index就是这个子view在父view中是第(index+1)个添加进去的(index从0开始算的)
先尝试去修改下,再有不懂的请留言~
帮你网络的 大致就这样 下面有参考资料http://..com/question/255392766.html