1、获取屏幕尺寸(高、宽)
Display display = getWindowManager().getDefaultDisplay();
display.getWidth()';//返回px值
display.getHeight();//返回px值
display.getRotation();//返回0或1,0表示竖屏,1表示横屏
2、设置界面不显示标题
以编程方式设置:
requestWindowFeature(Window.FEATURE_NO_TITLE);
在AndroidManifest.xml中设置全屏,以下代码写在<activity>中:
android:theme="@android:style/Theme.Black.NoTitleBar.Fullscreen"
3、使用应用程序上下文
Contextcontext = getApplicationContext();
由于Activity类时从Context派生而来的,因此,在Activity类中编写代码时,可直接使用this对象,而不用显式地获取应用程序上下文,例如:
Intentintent = new Intent(Main.this , activity.class);
Intentintent = new Intent(getApplication , activity.class);
4、获取应用程序资源
Stringstring = getResources().getString(R.string.hello);
5、访问应用程序首选项
要获取共享的应用程序首选项,可使用应用程序上下文的方法getSharedPreferences()。可以使用getSharedPreferences对象来存储简单的应用程序数据,如配置设置。可以给每个getSharedPreferences对象指定独特的名称一遍对首选项进行分类,或将所有首选项都存储在一个未命名的大型集合中。
例如,跟踪每位用户的姓名和一些简单的游戏状态信息,如用户是否有足够的金额继续玩下去。下面的代码创建一个名为GamePrefs的共享首选项集合,并在其中存储一些首选项:
//Context.MODE_PRIVATE设置共享机制为私有,仅应用程序内部访问
SharedPreferencessetting = getSharedPreferences("GamePrefs", Context.MODE_PRIVATE);
SharedPreferences.EditorprefEditor = setting.edit();
prefEditor.putString("UserName","小明");
prefEditor.putBoolean("HasCredits",true);
prefEditor.commit();
要获取首选项设置,只需要获取SharedPreferences并读取其中的值:
SharedPreferencesgettings = getSharedPreferences("GamePrefs", Context.MODE_PRIVATE);
StringuserName = gettings.getString("UserName", "如果要获取的值不存在,则返回这串字符");
6、使用意图传递信息
意图可用于在活动之间传递数据。要以这种方式使用意图,可在意图中包含额外的数据,这些数据被称为extra。Android编程约定是,在每项额外数据面前加上包名,如”com.singer.Five.NameOfExtra”:
Intent intent = newIntent(getApplicationContext() , Main.class);
intent.putExtra("com.singer.Five.NameOfExtra",23);
startActivityForResult(intent,0);
在传递到的activity中,通过getintent获取上述意图:
Intentintent2 = getIntent();
intt = intent2.getIntExtra("com.singer.Five.NameOfExtra", "如果要获取的值不存在,则返回这串字符");
7、获取资源
(1)、引用应用程序资源
要以编程方式访问应用程序资源,可使用自动生成的类文件R.java。要在您的Activity类中获取资源,必须使用方法getResources()获取应用程序的Resources对象,在根据要获取的资源类型调用合适的方法
例如要获取string.xml中定义的名为hello的字符串,可使用:
Stringstr = getResources().getString(R.string.hello);
(2)、使用系统资源
除了自己的私有资源外,应用程序还可以访问Android系统资源。这些标准资源是所有应用程序共享的,它们提供了统一的风格、其他模版以及常用的字符串和颜色。
系统资源存储在android.R包中。对于每种主要的资源类型,都有相应的类。例如android.R.string类包含系统字符串资源。要在activity类中获取名为ok的系统资源子if,首先需要使用Resources类的静态方法getSystem()来获取全局系统对象Resources,然后调用getString()方法,并给它传递合适的字符串资源名,例如:
String str =Resources.getSystem().getString(android.R.ok);
要在资源(如布局文件)中引用系统资源,可以使用如下格式:
@android:[资源类型]/[资源名称]
例如:
@android:string/ok
(3)、使用颜色
可以添加一个新的类型为value的XML文件用来存储颜色资源,例如:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="background_color">#006400</color>
<color name="app_text_color">#FFE4C4</color>
</resources>
Android系统支持12位和24为的RGB颜色,如图表:
格式 | 描述 | 示例 |
#RGB | 12位颜色 | #00FF(蓝色) |
#ARGB | 包含透明度(alpha)值的12位颜色 | #800F(透明度为50%的蓝色) |
#RRGGBB | 24位颜色 | #FF00FF(洋红色) |
#AARRGGBB | 包含透明度值的24为颜色 | #80FF00FF(透明度50%的洋红色) |
注意:颜色采用十六进制表示
下面在Activity类中使用getColor()方法获取颜色资源:
intcolor = getResources().getColor(R.color.app_text_color);
(4)、使用度量单位资源
方法相同,例如:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name=" thumbDim">100px</dimen>
</resources>
在Activity中获取度量单位资源:
FloatthumbnailDim = getResources().getDimension(R.dimen.thumbDim);
8、使用Drawable资源
应用程序最常用的Drawable资源是位图图像文件,Android支持的图像格式有*.png(PNG)、*.9.png(PNG)、*.jpg(JPEG/JPG)、*.gif(GIF),其中最常用的也是首选格式应该为*.png(PNG)、*.9.png(PNG)。
图像资源被封装在BitmapDrawable类中,要在Activity类中访问图形资源文件,可使用如下方法:
BitmapDrawablebitmap = (BitmapDrawable)getResources().getDrawable(R.drawable.logo);
如果要将控件的source属性设置为相应的资源标识符,让该资源将显示在屏幕上,例如:
ImageView.setImagerResource(R.drawable.logo);
9、使用XML文件
要在活动类中以编程方式访问XML资源文件res/xml/default_values.xml,可使用Resources类的方法getXml(),如下所示:
XmlResourceParser xmlResourceParser= getResources().getXml(R.xml.default_values);
获取XML分析器对象后,便可以分析XML、提取合适的数据元素并以想要的方式使用。
10、使用原始文件
应用程序可将原始(raw)作为资源。应用程序可能使用的原始文件包括音频文件、视频文件以及您需要的其他任何格式的文件。所有的原始资源文件都应放在资源目录/res/raw中,并有唯一的名称(不包括扩展名,这意味着file1.txt和file1.dat将放生冲突)
要在您的活动类中以编程方式使用原始文件资源,只需要使用Resources类的方法openRawResource()。例如,下面的代码创建了一个InputStream对象,以便访问资源文件/res/raw/file1.txt:
InputStreaminputStream = getResources().openRawResource(R.raw.file1);
提示:有时候,您可能想在应用程序中包含文件,但有不将它们编译到应用程序资源中,为此,Android一共了一个特殊的目录——/assets,这个项目目录与目录/res位于同一级。包含在该目录中的任何文件都将作为二进制(binary)资源与应用程序安装包一起提供,它们不会被编译到应用程序中,对其使用方法如下:
InputStreaminputStream2 = getResources().getAssets().open("file1.txt");
1、使用Permissions选项卡
Android清单文件Androidmanifest.xml中的选项卡Permissions包含应用程序需要的权限规则,该选项卡还用于实施为应用程序创建的自定义权限。
警告:不要将Application选项卡中的下拉列表Permissions与选项卡中Permissions混为一谈。选项卡Permissions用于定义应用程序访问资源或APO所需要的权限,而下拉列表Permission用于指定其他程序为访问当前应用程序暴露的资源和API所需要的权限。
2、Android SDK版本
在创建应用程序时需要设置应用程序支持的最低Android SDK版本,在Androidmainfest.xml中使用<use-sdk Theandroid:minSdkVersion=””>来表示,下面是常用Android SDK版本对应的值
Android SDK 版本 | 对应的值 |
Android 2.0 SDK | 5 |
Android 2.0.1 SDK | 6 |
Android 2.1 SDK | 7 |
Android 2.2 SDK | 8 |
Android 2.3 SDK | 9 |
Android 2.3.3/2.3.4 SDK | 10 |
Android 3.0 SDK | 11 |
Android 3.1 SDK | 12 |
3、应用程序权限
Android文件清单中使用<uses-permission>标记声明权限,可以在Androidmanifest.xml选项卡下通过代码添加,也可以在Permissions选项卡中添加。下面是一些常用的权限:
权限类别 | 很有用的权限 |
基于位置的服务 | android.permissioin.ACCESS_COARSE_LOCATION android.permissioin.ACCESS_FINE_LOCATION |
操作内存卡 | android.permission.MOUNT_UNMOUNT_FILESYSTEMS android.permission.WRITE_EXTERNAL_STORAGE |
访问联系人数据库 | android.permission.READ_CONTACTS android.permission.WRITE_CONTACTS |
拨打电话 | android.permission.CALL_PHONE android.permission.CALL_PRIVILEGED |
收发短信 | android.permission.READ_SMS android.permission.RECEIVE_MMS android.permission.RECEIVE_SMS android.permission.RECEIVE_WAP_PUSH android.permission.SEND_SMS android.permission.WRITE_SMS |
访问网络 | android.permission.INTERNET |
访问音频设置 | android.permission.RECORD_AUDIO android.permission.MODIFY_AUDIO_SETTINGS |
访问网络设置 | android.permission.ACCESS_NETWORK_STATE android.permission.CHANGE_NETWORK_STATE |
访问Wi-Fi设置 | android.permission.ACCESS_WIFI_STATE android.permission.CHANGE_WIFI_STATE |
访问蓝牙 | android.permission.BLUETOOTH |
访问照相机 | android.permission.CAMERA |
访问闪光灯 | android.permission.FLASHLIGHT |
访问重力感应 | android.permission.VIBREATE |
访问电池状态 | android.permission.BATTERY_STATE |
1、使用ListView控件
ListView控件需要一个布局文件和一个数组资源填充,步骤为:
创建一个布局文件menu.xml,用于ListView的每一行:
- <TextView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:gravity="center_horizontal"
- android:textColor="@android:color/background_dark"
- android:shadowColor="@android:color/background_dark"
- android:shadowDx="3"
- android:shadowDy="3"/>
获取ListView:
ListView listView = (ListView)findViewById(R.id.listview);
接下来定义要用来填充ListView控件中各个控件(例如TextView)的字符串:
- String[] items = {getResources().getString(R.string.app_name),
- getResources().getString(R.string.app_name),
- getResources().getString(R.string.app_name),
- getResources().getString(R.string.app_name)};
使用一个数据适配器(adapter)将数据关联到您创建的布局模版menu.xml,使用哪种适配器取决于使用的数据类型,这里使用的是ArrayAdapter:
- ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.menu , item);
1) 添加自定义分隔条:
在布局文件中的ListView下,将图形资源替换即可:
android:divider="@android:drawable/alert_dark_frame"
2) ListView选定指示器指出当前选择了哪个列表项,由属性listSelector控制。默认情况下,ListView控件的选定指示器是橙色镶边,要改变它只需要在布局文件中将listSelector属性改为自定义图形资源即可:
android:listSelector="@drawable/btnback"
2、其他类型的菜单
上下文菜单(Context menu):用户长时间按住视图对象时弹出的菜单,这种菜单通常与包含类似选项的ListView控件结合使用。当用户长时间按住特定歌曲时,将打开上下文菜单,其中包含注入Play、Delete和Add to Playlist等选项;
选项菜单(Option menus):每当用户单击手机上的Menu按钮时,都将弹出一个选项菜单。这种菜单常用于帮助用户处理应用程序设置等。
1).选项菜单的添加:
首先使用XML文件在/res/menu菜单下创建一个菜单定义资源mymenu.xml
- <?xml version="1.0" encoding="utf-8"?>
- <menu xmlns:android="http://schemas.android.com/apk/res/android" >
- <item
- android:id="@+id/settings_menu_item"
- android:title="@string/app_name"
- android:icon="@android:drawable/ic_menu_preferences"/>
- <item
- android:id="@+id/help_menu_item"
- android:title="@string/hello_world"
- android:icon="@android:drawable/ic_menu_help"/>
- </menu>
将选项菜单加入到活动中,重写onCreateOptionsMenu()方法:
- @Override
- public boolean onCreateOptionsMenu(Menu menu)
- {
- getMenuInflater().inflate(R.menu.activity_main, menu);
- return true;
- }
处理用户选择菜单,监视用户打开选项菜单并选择菜单项的操作,重写onOptionsItemSelected()方法:
- @Override
- public boolean onOptionsItemSelected(MenuItem item)
- {
- switch (item.getItemId())
- {
- case R.id.settings_menu_item:
- Toast.makeText(getApplicationContext(),"1",Toast.LENGTH_LONG).show();
- break;
- case R.id.help_menu_item:
- Toast.makeText(getApplicationContext(), "2",Toast.LENGTH_LONG).show();
- break;
- }
- return super.onOptionsItemSelected(item);
- }
3、TabHost的使用
使用TabHost可以在一个屏幕间对不同面板进行切换,步骤如下:
首先建立自己的.xml文件,包含TabHost,TabWidget,FramLayout:
- <?xml version="1.0" encoding="utf-8"?>
- <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/tabHost"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <TabWidget
- android:id="@android:id/tabs"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- </TabWidget>
- <FrameLayout
- android:id="@android:id/tabcontent"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- </FrameLayout>
- </LinearLayout>
- </TabHost>
注意:除了tabhost的id可以自定义以外,其他的必须使用系统的id
建立几个布局文件作为不同面板相互切换:
- <?xml version="1.0" encoding="utf-8"?>
- <TabHost xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/tabHost"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
- <LinearLayout
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- android:orientation="vertical">
- <TabWidget
- android:id="@android:id/tabs"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content">
- </TabWidget>
- <FrameLayout
- android:id="@android:id/tabcontent"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent">
- </FrameLayout>
- </LinearLayout>
- </TabHost>
获取TabHost并初始化:
setContentView(R.layout.tabhost);
TabHost tabHost = (TabHost)findViewById(R.id.tabHost);
注册上面的两个布局文件作为tabhost的内容
(注意:如果直接在<tabhost/>下的<FrameLayout/>中设置内容,则不用这一步)
LayoutInflater inflater = LayoutInflater.from(getApplicationContext());
inflater.inflate(R.layout.tab1, tabHost.getTabContentView());
inflater.inflate(R.layout.tab2, tabHost.getTabContentView());
构建tabSpec并添加进tabhost中:
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("taba",getResources().getDrawable(android.R.drawable.ic_menu_camera)).setContent(R.id.fl01)); tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("tabb",getResources().getDrawable(android.R.drawable.ic_menu_help)).setContent(R.id.ll02));
4、添加字符串数组资源
要创建字符串数组资源,首先要添加资源文件/res/values/arrays.xml,在该文件中,创建一个名为names<string-array>元素,再在该元素内添加若干<item>元素——每个字符串资源一个。
假定在资源文件strings.xml中穿件了如下字符串资源:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string name="first">我叫第一</string>
- <string name="second">我叫第二</string>
- <string name="third">我叫第三</string>
- </resources>
在资源文件arrays.xml中,将每个字符串资源作为一项加入到字符串数组names中。例如:
- <?xml version="1.0" encoding="utf-8"?>
- <resources>
- <string-array name="names">
- <item>@string/first</item>
- <item>@string/second</item>
- <item>@string/third</item>
- </string-array>
- </resources>
保存资源文件arrays.xml。要加载字符串数组资源names,可以通过编程方式访问它,方法有:
1).通过getResource()获取并赋值给同数据类型的数组
String[] str = getResources().getStringArray(R.array.names);
2).通过给Spinner设置ArrayAdapter获取
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(getApplicationContext(), R.array.names, android.R.layout.simple_spinner_item);
spinner.setAdapter(adapter);
5、使用Spinner控件
Spinner控件是一个下拉列表。在关闭状态下,Spinner控件很像下拉列表,但被激活后,它显示一个选择器窗口,而不是在住屏幕上显示一个下拉列表。
<Spinner
android:id="@+id/spinner"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:entries="@array/names"/>
其中的android:entries属性用于指定spinner控件要显示的字符串数组资源;也可以以编程方式使用setAdapter将数据绑定在spinner中;setSelection()方法指定默认选择的选项。
6、对话框合集:
Dialog:所有对话框的基类,是最简单的对话框,可用于通知用户,一般出现在屏幕的下部;
AlertDialog:包含一个、两个或三个Button控件的对话框,常用于让用户确认或拒绝操作,如删除文件;
CharacterPickerDialog:让用户选择与基本字符串相关联的特殊字符的对话框,这种对话框常用于提供一系列字符供用户选择;
DataPickerDialog:包含DataPicker控件的对话框,用于让用户输入日期;
ProgressDialog:包含Pregress控件的对话框,用于将操作的状态或进度告诉用户,如正在上传或下载数据;
TimePickerDailog:包含TimePicker控件的对话框,用于让用户输入时间;
自定义对话框:使用对话框生成器(dialog builder)自定义对话框布局。
1、获取资源: Resources res = getBaseContext().getResources();
Drawable draw=res.getDrawable(R.drawable.icon);
2、获得数组: String[] ary = getResources().getStringArray(R.array.ary);
3、自动提示框:
String[] arrays=new String[]{"a","ab","abc","bc","bcde","ee"};
actalert=(AutoCompleteTextView)findViewById(R.id.actalert);
ArrayAdapter<String> adapter=new ArrayAdapter<String>(
this,
android.R.layout.simple_dropdown_item_1line,
arrays);
actalert.setAdapter(adapter);
mactalert=(MultiAutoCompleteTextView)findViewById(R.id.mactvalert);
mactalert.setAdapter(adapter);
// 设置多个值之间的分隔符,此处为逗号
mactalert.setTokenizer(new MultiAutoCompleteTextView.CommaTokenizer());
4、spinner设置数据源
spncolor.setPrompt("请选择");
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
this, R.array.attr, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spncolor.setAdapter(adapter);
5、显示当前时间:
SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
// 将当前时间显示在TextView组件中
tvTime.setText("当前时间:" + sdf.format(new Date()));
6、代码添加布局文件
AbsListView.LayoutParams lp = new AbsListView.LayoutParams(
ViewGroup.LayoutParams.FILL_PARENT, 64);
TextView text = new TextView(activity);
text.setLayoutParams(lp);
text.setTextSize(20);
text.setGravity(Gravity.CENTER_VERTICAL | Gravity.LEFT);
text.setPadding(36, 0, 0, 0);
text.setText(s);
7、自定义窗口标题栏代码
requestWindowFeature(Window.FEATURE_CUSTOM_TITLE);//自定义标题栏
setContentView(R.layout.main);
//为标题栏设置一个xml布局
getWindow().setFeatureInt(Window.FEATURE_CUSTOM_TITLE, R.layout.title_custom);
custom_title.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView android:id="@+id/tvtitle"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentLeft="true"></TextView>
<LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content"
android:layout_toRightOf="@+id/tvtile" android:orientation="horizontal"
android:layout_alignParentRight="true" android:gravity="center">
<Button android:text="@string/answer" android:id="@+id/btnanswer"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@color/btn_inter" android:layout_marginRight="8dp"
android:gravity="center" android:paddingTop="2dp"></Button>
<Button android:text="@string/submit" android:id="@+id/btnsubmit"
android:layout_width="wrap_content" android:layout_height="wrap_content"
android:background="@color/btn_inter" android:layout_marginRight="8dp"
android:gravity="center" android:paddingTop="2dp"></Button>
</LinearLayout>
</RelativeLayout>
8、Activity仿Dialog Theme(加图标和标题其实就是Activity的icon和titile)(1)、自定义样式
<style name="Theme.CustomDialog" parent="android:style/Theme.Dialog">
<item name="android:windowBackground">@drawable/filled_box</item>
</style>
@drawable/filled_box:资源文件中新建drawable文件夹,新建filled_box样式xml
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="#f0600000"/>
<stroke android:width="3dp" color="#ffff8080"/>
<corners android:radius="3dp" />
<padding android:left="10dp" android:top="10dp"
android:right="10dp" android:bottom="10dp" />
</shape>
(2)Manifest.xml中配置Acitivity样式
<activity android:name=".Main"
android:label="@string/app_name"
android:theme="@android:style/Theme.Dialog">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
(3)为Activity设置图标
//设定窗口模式(仿Dialog中的icon,带有一个左图标)
requestWindowFeature(Window.FEATURE_LEFT_ICON);
setContentView(R.layout.main);
//设置图片资源
getWindow().setFeatureDrawableResource(Window.FEATURE_LEFT_ICON
, R.drawable.icon);
9、从一个Activity1到另一个Activity2,当在第二个Activity2按返回键不出现Activity1的做法是在打开Activity2的同时关闭Activity1
Intent intent = new Intent(Main.this, fowardwidget.class);
startActivity(intent);
finish();
10、允许TextView的文本值拼接
(1)允许在TextView的文本值后添加buffer text
tv.setText(tv.getText(),TextView.BufferType.EDITABLE);
(2)使用Editable对象添加buffer text
Editable text=(Editable)tv.getText();
text.append("editable");
text.append("\n"):
11、如果历史栈中包含Activity,打开此Activity从栈中放到栈顶层而不是从新打开Activity
Intent intent = new Intent(ReorderFour.this, ReorderTwo.class);
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
startActivity(intent);
12、避免输入法面板遮挡,在manifest.xml中activity中设置android:windowSoftInputMode
android:windowSoftInputMode="stateVisible|adjustResize"
13、获取当前手机壁纸和设置手机壁纸(wallpaper)(1)获取当前壁纸
WallpaperManager wm=WallpaperManager.getInstance(this);
Drawable wallpaper=wpm.getDrawable();
(2)设置当前壁纸,同时要添加壁纸设置权限
imapaper.setDrawingCacheEnabled(true);
Drawable drawale=this.getResources().getDrawable(R.drawable.bg);
imapaper.setImageDrawable(drawale);
wpm.setBitmap(imapaper.getDrawingCache());
<uses-permission android:name="android.permission.SET_WALLPAPER"></uses-permission>
14、常见通过系统服务得到的实例化对象
NotificationManager nm=(NotificationManager)getSystemService(NOTIFICATION_SERVICE);
15、检查网络是否连接
//检查网络是否连接
public boolean checkIntent(){
ConnectivityManager mannager=(ConnectivityManager)
this.getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo info=mannager.getActiveNetworkInfo();
if(info==null || !info.isConnected()){
return false;
}
if(info.isRoaming()){
return true;
}
return true;
}
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
16、从资源文件中(asset)读取文本文档
//获得输入流
InputStream in=getAssets().open("read_asset.txt");
int size=in.available();
//将输入流读到字节数组中(内存)
byte[] buffer=new byte[size];
in.read(buffer);
in.close();
String text=new String(buffer);
17、TextView、Button等设置文本滚动(跑马灯效果),控件必须获得焦点才能有滚动效果,并且文字长度大于控件长度
android:singleLine="true"
android:ellipsize="marquee"
android:focusable="true"
android:marqueeRepeatLimit="marquee_forever"
//marquee_forever:一直滚动下去,n(整数):滚动n次
18、TextView文本添加下划线
TextView textView = (TextView)findViewById(R.id.testView);
textView.setText(Html.fromHtml("<u>"+"hahaha"+"</u>"));
19、TextView添加图片
String src=""+R.drawable.qq;
Html.ImageGetter imageGetter =new ImageGetter() {
Drawable draw=null;
@Override
public Drawable getDrawable(String source) {
// TODO Auto-generated method stub
int id=Integer.parseInt(source.trim());
draw=getResources().getDrawable(id);
draw.setBounds(0, 0, draw.getIntrinsicWidth(), draw.getIntrinsicHeight());
return draw;
}
};
tvquestion.append(Html.fromHtml("<img src="+src+"", imageGetter, null));
20、秒转成00:00:00
int hour=time/60/60%60;
int minute = time/60%60;
int second = time%60;
String strhour=hour<10 ? "0" + hour : "" + hour;
String strminutes=minute<10 ? "0" + minute : "" + minute;
String strseconds=second < 10 ? "0" + second : "" + second;
tvtimer.setText(strhour+":"+strminutes+":"+strseconds);
21、TextView添加滚动条
<ScrollView android:id="@+id/sv_e8_question"
android:layout_width="fill_parent" android:layout_height="180dp"
android:scrollbarStyle="outsideOverlay">
<TextView android:text="@string/question" android:id="@+id/tv_e8_question"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:paddingTop="5dp" android:paddingLeft="5dp"></TextView>
</ScrollView>
22、Activity自动销毁时调用onSaveInstanceState()方法保存配置信息:可多Activity共享
@Override
public void onSaveInstanceState(Bundle outState){
SharedPreferences.Editor editor=getSharedPreferences("sp_timer", 0).edit();
editor.putInt(arg0, arg1);
super.onSaveInstanceState(outState);
}
单个Activity保存
@Override
public void onSaveInstanceState(Bundle outState){
SharedPreferences.Editor editor=this.getPreferences(0).edit();
editor.putInt(arg0, arg1);
super.onSaveInstanceState(outState);
}