android学习手册
Ⅰ android弹窗效果怎么搞
使用AlertDialog
下面解决办法来自于android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载。排到第三个。
AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。
要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。
使用AlertDialog.Builder创建对话框需要了解以下几个方法:
setTitle :为对话框设置标题setIcon :为对话框设置图标setMessage:为对话框设置内容setView : 给对话框设置自定义样式setItems :设置对话框要显示的一个list,一般用于显示几个命令时setMultiChoiceItems :用来设置对话框显示一系列的复选框setNeutralButton :普通按钮
setPositiveButton :给对话框添加"Yes"按钮
setNegativeButton :对话框添加"No"按钮
create : 创建对话框
show :显示对话框
一、简单的AlertDialog
下面,创建一个简单的ALertDialog并显示它:
[java] view plain print?
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
public class Dialog_AlertDialogDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("对话框的标题").
setMessage("对话框的内容").
setIcon(R.drawable.ic_launcher).
create();
alertDialog.show();
}
}
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.os.Bundle;
public class Dialog_AlertDialogDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("对话框的标题").
setMessage("对话框的内容").
setIcon(R.drawable.ic_launcher).
create();
alertDialog.show();
}
}
运行结果如下:
二、带按钮的AlertDialog
上面的例子很简单,下面我们在这个AlertDialog上面加几个Button,实现删除操作的提示对话框
[java] view plain print?
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
public class Dialog_AlertDialogDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("确定删除?").
setMessage("您确定删除该条信息吗?").
setIcon(R.drawable.ic_launcher).
setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
setNeutralButton("查看详情", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
create();
alertDialog.show();
}
}
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.DialogInterface;
import android.os.Bundle;
public class Dialog_AlertDialogDemoActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Dialog alertDialog = new AlertDialog.Builder(this).
setTitle("确定删除?").
setMessage("您确定删除该条信息吗?").
setIcon(R.drawable.ic_launcher).
setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
setNeutralButton("查看详情", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// TODO Auto-generated method stub
}
}).
create();
alertDialog.show();
}
}
运行结果如下:
Ⅱ 谁能推荐好的android进阶书籍
组件是在需要的时候才会使用,
比如servie ,了解注意它的生命周期。和什么情况下使用,运行在系统中,什么时候杀掉,什么时候不让它被杀掉。等等。
弄安卓有小一段时间了,控件。组件,线程,异步都不难用,主要是有编程思想,
可惜我现在还没有。脑子比较乱。不用刻意去弄这些。做项目的时候需要的时候,
网络,看下API 很简单。
做完一个客户端。基本都涉及了。
也算是了解了。
书籍的话,疯狂的讲义 不错。
Ⅲ 用android studio遇到一个问题(ret":0,) 我怎么才能做到取"0"这个呢左边是ret":符号和字母,右边是,
共有n种方式。
1 如果这个字符串是以ret":开头,以,结尾,直接用
Stringstrtt="ret":0,";
Stringstr5=strtt.substring(5,strtt.length()-1);
System.out.println(str5);
2 最好的方式,正则表达式。
下面是个代码来自于android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
Stringstrtt="ret":0,";
PatternpatternT=Pattern.compile("ret":(.*?),");
Matchermatcher3=patternT.matcher(strtt);
while(matcher3.find()){
Stringstr2=strtt.substring(matcher3.start()+5,matcher3.end()-1);
//System.out.println("Valueis:"+matcher3.group(1)+""+matcher3.start()+""+matcher3.end());
System.out.println(str2);
}
Ⅳ 学习编程是看java学习手册有用还是Android第一行代码有用
如果你是为了学习安卓而学习java,那么你只需要看看java相关的视频就可以了,比如尚学堂马士兵老师的java教程。然后再看一遍第一行代码这本书,这本书通俗易懂,很适合初学者,看完之后照着练习。然后就可以看一些android案例之类的书籍,学习写项目了。第一行代码的都是很基础的东西,要做项目其实很多时候都是要用到开源库的,比如请求网络数据,真正项目开发中就很少自己封装HttpClient或者HttpUrlConnection了,类似获取新闻客户端这种很多新闻信息,就可以用google推出的框架volley。使用volley框架后,网络数据的请求,特别是图片的请求和缓存就变得非常容易了。
Ⅳ android怎么使用sqlopenhelper
下面是SQLiteOpenHelper增删改查的例子。
例子来自于android学习手册,里面有源码。android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
我们大家都知道Android平台提供给我们一个数据库辅助类来创建或打开数据库,这个辅助类继承自SQLiteOpenHelper类,在该类的构造器中,调用Context中的方法创建并打开一个指定名称的数据库对象。继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。
onCreate(SQLiteDatabase db) : 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。
onUpgrade(SQLiteDatabse dv, int oldVersion,int new Version):当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。
除了上述两个必须要实现的方法外,还可以选择性地实现onOpen 方法,该方法会在每次打开数据库时被调用。
SQLiteOpenHelper 类的基本用法是:当需要创建或打开一个数据库并获得数据库对象时,首先根据指定的文件名创建一个辅助对象,然后调用该对象的getWritableDatabase 或 getReadableDatabase方法 获得SQLiteDatabase 对象。
调用getReadableDatabase 方法返回的并不总是只读数据库对象,一般来说该方法和getWriteableDatabase 方法的返回情况相同,只有在数据库仅开放只读权限或磁盘已满时才会返回一个只读的数据库对象。
下面通过一个简单的小例子说明SQLiteOpenDatabase的用法,其中包括创建数据库、插入数据、更新 、查询等等,我们将查询后获取到的数据显示到TextView上,看一下运行后的效果。MySQLiteHelper
Java代码
packagexiaohang.meng;
importandroid.content.Context;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.database.sqlite.SQLiteOpenHelper;
importandroid.database.sqlite.SQLiteDatabase.CursorFactory;
{
//调用父类构造器
publicMySQLiteHelper(Contextcontext,Stringname,CursorFactoryfactory,
intversion){
super(context,name,factory,version);
}
/**
*当数据库首次创建时执行该方法,一般将创建表等初始化操作放在该方法中执行.
*重写onCreate方法,调用execSQL方法创建表
**/
@Override
publicvoidonCreate(SQLiteDatabasedb){
db.execSQL("createtableifnotexistshero_info("
+"idintegerprimarykey,"
+"namevarchar,"
+"levelinteger)");
}
//当打开数据库时传入的版本号与当前的版本号不同时会调用该方法
@Override
publicvoidonUpgrade(SQLiteDatabasedb,intoldVersion,intnewVersion){
}
}
Activity01
Java代码
packagexiaohang.meng;
importandroid.app.Activity;
importandroid.content.ContentValues;
importandroid.database.Cursor;
importandroid.database.sqlite.SQLiteDatabase;
importandroid.graphics.Color;
importandroid.os.Bundle;
importandroid.widget.TextView;
{
MySQLiteHelpermyHelper;
TextViewtv;
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
tv=(TextView)findViewById(R.id.tv);
//创建MySQLiteOpenHelper辅助类对象
myHelper=newMySQLiteHelper(this,"my.db",null,1);
//向数据库中插入和更新数据
insertAndUpdateData(myHelper);
//查询数据
Stringresult=queryData(myHelper);
tv.setTextColor(Color.RED);
tv.setTextSize(20.0f);
tv.setText("名字 等级 "+result);
}
//向数据库中插入和更新数据
publicvoidinsertAndUpdateData(MySQLiteHelpermyHelper){
//获取数据库对象
SQLiteDatabasedb=myHelper.getWritableDatabase();
//使用execSQL方法向表中插入数据
db.execSQL("insertintohero_info(name,level)values('bb',0)");
//使用insert方法向表中插入数据
ContentValuesvalues=newContentValues();
values.put("name","xh");
values.put("level",5);
//调用方法插入数据
db.insert("hero_info","id",values);
//使用update方法更新表中的数据
//清空ContentValues对象
values.clear();
values.put("name","xh");
values.put("level",10);
//更新xh的level为10
db.update("hero_info",values,"level=5",null);
//关闭SQLiteDatabase对象
db.close();
}
//从数据库中查询数据
publicStringqueryData(MySQLiteHelpermyHelper){
Stringresult="";
//获得数据库对象
SQLiteDatabasedb=myHelper.getReadableDatabase();
//查询表中的数据
Cursorcursor=db.query("hero_info",null,null,null,null,null,"idasc");
//获取name列的索引
intnameIndex=cursor.getColumnIndex("name");
//获取level列的索引
intlevelIndex=cursor.getColumnIndex("level");
for(cursor.moveToFirst();!(cursor.isAfterLast());cursor.moveToNext()){
result=result+cursor.getString(nameIndex)+" ";
result=result+cursor.getInt(levelIndex)+" ";
}
cursor.close();//关闭结果集
db.close();//关闭数据库对象
returnresult;
}
@Override
protectedvoidonDestroy(){
SQLiteDatabasedb=myHelper.getWritableDatabase();//获取数据库对象
//删除hero_info表中所有的数据传入1表示删除所有行------>点击back按钮
db.delete("hero_info","1",null);
super.onDestroy();
}
}
Ⅵ 新手开发android APP 直接给个接口怎么开发
不需要。就是使用http协议,
下面是使用截图,看网络部分
//和GET方式一样,先将参数放入List
params=newLinkedList<BasicNameValuePair>();
params.add(newBasicNameValuePair("param1","Post方法"));
params.add(newBasicNameValuePair("param2","第二个参数"));
try{
HttpPostpostMethod=newHttpPost(baseUrl);
postMethod.setEntity(newUrlEncodedFormEntity(params,"utf-8"));//将参数填入POSTEntity中
HttpResponseresponse=httpClient.execute(postMethod);//执行POST方法
Log.i(TAG,"resCode="+response.getStatusLine().getStatusCode());//获取响应码
Log.i(TAG,"result="+EntityUtils.toString(response.getEntity(),"utf-8"));//获取响应内容
}catch(UnsupportedEncodingExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(ClientProtocolExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}catch(IOExceptione){
//TODOAuto-generatedcatchblock
e.printStackTrace();
}
Ⅶ 新手Android中px=dp*(dpi/160)的解释
在160dpi的手机上1px=1dp,这句话的以上是说,手机屏幕宽带被分割成了160块,每一块有一个像素点,每一块就是一个dp。 那么1dp=1px
而320dpi的手机上,分辨率是上一个手机的两倍,手机屏幕宽带也被分割成了160块,每一块有两个像素点,每一块也是一个dp,那么1dp=2px
上面分析来自于android学习手册,360手机助手中可以下载,里面有108个android例子,源码文档都可在里面看,下面是截图
importandroid.content.Context;
publicclassDensityUtil{
/**
*根据手机的分辨率从dp的单位转成为px(像素)
*/
publicstaticintdip2px(Contextcontext,floatdpValue){
finalfloatscale=context.getResources().getDisplayMetrics().density;
return(int)(dpValue*scale+0.5f);
}
/**
*根据手机的分辨率从px(像素)的单位转成为dp
*/
publicstaticintpx2dip(Contextcontext,floatpxValue){
finalfloatscale=context.getResources().getDisplayMetrics().density;
return(int)(pxValue/scale+0.5f);
}
}
Ⅷ 想看一个开源的Android Studio 项目 , 新手看不懂 有没有大神教教我该怎么看
看开源的项目的,一定要看他的开发文档,有很多注释
Ⅸ 自学android开发需要学习哪些课程
自己多模仿一些开源代码写demo就好了,比较着名的开源项目有小米便签等,你可以搜搜。
Ⅹ android 多个页面怎么共用同一组件
自定义组件就行。如果觉得还不好就创建一个mole。
关于自定义组件的实例,请参考android学习手册,android学习手册包含9个章节,108个例子,源码文档随便看,例子都是可交互,可运行,源码采用android studio目录结构,高亮显示代码,文档都采用文档结构图显示,可以快速定位。360手机助手中下载,图标上有贝壳
.多个Activity共用相同布局或者相同控件:避免重复代码;
BaseActivit代码:
{
/*
* 多个Activity共用相同布局或者相同控件
* 写个基类继承,避免重复代码
*/
@Override
publicvoidonClick(View v)
{
switch(v.getId())
{
caseR.id.common_titlebar_btn_back:
finish();
break;
default:
break;
}
baseOnClick(v);
}
protectedvoidbaseOnClick(View v)
{
}
@Override
protectedvoidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_base);
}
@Override
protectedvoidonResume()
{
super.onResume();
onPostOnCreate();
}
publicfinalvoidonPostOnCreate()//find同一个控件
{
findViewById(R.id.common_titlebar_btn_back).setOnClickListener(this);
}
@Override
(Menu menu)
{
getMenuInflater().inflate(R.menu.base, menu);
returntrue;
}
}
子类代码:
{
/**
* layout里复用同一布局:
* < include
* android:id="@+id/include1"
* layout="@layout/common_titlebar" />
*/
@Override
protectedvoidonCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_third_main);
}
}