组件参数ID android:id="@+id/ID名称"
TextView 变量 =(TextView)findViewById(R.id.名字);
字符串资源 数值资源 颜色 字符串数字 数值数组 图片 文字大小 样式 主题 等。。
res-values-strings.xml 值文件 android:text="@string/名字"
获取资源文件 getResoucrse.getColor(R.color.id) 等方法。。。。
弹窗 Toast.makeText(getBaseContext(), "哈哈哈哈哈", 4).show();
TextView t1= (TextView)findViewById(R.id.t1); //获取t1
TextView tt2=(TextView)findViewById(R.id.textView1); //获取tt2
EditView ed=(EditView)findViewById(R.id.EditView); //获取tt2
t1.setTextSize(BIND_IMPORTANT, 20); //设置文字大小
tt2.setBackgroundColor(Color.RED); //设置背景颜色
tt2.setText(t1.getText().toString()); //获取文字 并设置文字
ed.setText(tt2.getText().toString());
TextView 文字显示组件
EditView 编辑框
Button 按钮
ImageButton 图片按钮
ToggleButton 按钮 OFF ON 开关
CheckBox 复选框+
TextView 限制输入内容 +android:inputType
CheckBox 默认选中 android:checked="true"
绑定事件的4种方法
创建类
bt.setOnClickListener(new ck());
public class ck implements OnClickListener{
@Override
public void onClick(View v) {
///////////
}
};
匿名内部类
bt.setOnClickListener(new OnClickListener()
{
@Override
public void onClick(View arg0)
{
}
});
布局里 android:onClick="add" 就会执行add方法。
void onClick(View v) { }
当前类继承接口
public class MainActivity extends Activity implements OnClickListener
@Override
public void onClick(View v) {
}
bt.setOnClickListener(this)
AndroidManifest.xml
package="com.example.app" 包名
android:versionCode="1" 版本号
android:versionName="1.0" 版本名称
android:installLocation
安装位置 aotu 默认自动寻找 internalOnly 值能ROM preferExternal直接安装SD卡
<activity
android:name="com.example.app.MainActivity" 程序的主入口
android:label="@string/app_name" >
关于意图
首先要去注册意图
AndroidManifest.xml 文件注册意图
<activity android:name=".M2"></activity>
需要新先建立class文件
意图传单
Intent in2 = new Intent(MainActivity.this, M3.class);
in2.putExtra("A", "AAA");
startActivity(in2);
接收
Intent i=getIntent();
String s=i.getStringExtra("A");
t3.setText(s);
错误提示:
Failed to install xxx.apk on device 'emulator-5554': timeout
或者
the user data image is used
原因:
由于模拟器已经开启而没有关闭或者非法关闭引起的。
解决方法:
删除 C:\Documents and Settings\Administrator\.android\avd\对应版本.avd
下所有以.lock结尾的文件夹。
或者
Failed to install *.apk on device *:
timeout Launch canceled!
还有一种办法:
在window->preferences->Android->DDMS->ADB connection time out (ms):
将这个值设置的大一些,默认为5000,我设置成500000,然后就OK了。
1.创建一个证书
C:/jdk1.5.0_04/bin>keytool -genkey -alias xahCA -keyalg RSA -keystore dyfCALib
查看证书
keytool -list -v -keystore keystorefile -storepass 123456
其中keytool为jdk自带工具;keystorefile为Android 签名证书文件
setTitle("ColaBox-添加账单");
修改页面标题
压力测试 adb shell
monkey 5000 随即点击5000次。。。。 冒烟测试
将需要安装的apk文件复制到platform-tools目录下
在cmd窗口中的platform-tools目录下输入adb install game.apk,回车,稍等,完成apk在模拟器上的安装。
LayoutInflater和inflate()方法的用法
LayoutInflater作用是将layout的xml布局文件实例化为View类对象。
1).通过SystemService获得
LayoutInflater inflater = (LayoutInflater)context.getSystemServices(Context.LAYOUT_INFLATER_SERVICES);
View view = inflater.inflate(R.layout.main, null);
2).从给定的context中获得
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.mian, null);
(3). LayoutInflaterinflater =getLayoutInflater();(在Activity中可以使用,实际上是View子类下window的一个函数)
Viewlayout = inflater.inflate(R.layout.main,null);
,这三种方式本质是相同的,从源码中可以看出:
CheckedTextView 组件其实就是一个 但文字提示的多选按钮。。
前提是 有android:checkMark="?android:attr/listChoiceIndicatorMultiple" 这个样式
有点击事件setOnClickListener
有反转状态事件 toggle();
置checkedTextView1为选中状态 .setChecked(true); //默认是false
--------------------------------------------------------------------------------------------
载入布局。
<include android:layout_width="wrap_content"
android:layout_height="wrap_content"
layout="@layout/laa" />
<include android:layout_width="fill_parent"
android:layout_height="fill_parent"
layout="@layout/lbb" />
--------------------------------------------------
Switch 控件 就是按钮的切换状态
FrameLayout 布局 后面的在上面 层叠 android:layout_gravity="bottom|center"
显示
btn.setVisibility(View.VISIBLE);
隐藏
btn.setVisibility(View.INVISIBLE);
int -> String
第一种方法:s=i+"";
第二种方法:s=String.valueOf(i);
String -> int
第一种方法:i=Integer.parseInt(s);
第二种方法:i=Integer.valueOf(s).intValue();
requestWindowFeature(Window.FEATURE_NO_TITLE);
DEFAULT_FEATURES:系统默认状态,一般不需要指定
2.FEATURE_CONTEXT_MENU:启用ContextMenu,默认该项已启用,一般无需指定
3.FEATURE_CUSTOM_TITLE:自定义标题。当需要自定义标题时必须指定。如:标题是一个按钮时
4.FEATURE_INDETERMINATE_PROGRESS:不确定的进度
5.FEATURE_LEFT_ICON:标题栏左侧的图标
6.FEATURE_NO_TITLE:无标题
7.FEATURE_OPTIONS_PANEL:启用“选项面板”功能,默认已启用。
8.FEATURE_PROGRESS:进度指示器功能
9.FEATURE_RIGHT_ICON:标题栏右侧的图标
获取当前应用的版本号:
private String getVersionName() throws Exception
{
// 获取packagemanager的实例
PackageManager packageManager = getPackageManager();
// getPackageName()是你当前类的包名,0代表是获取版本信息
PackageInfo packInfo = packageManager.getPackageInfo(getPackageName(),0);
String version = packInfo.versionName;
return version;
}
获取当前系统的版本号:
textView.setText("Product Model: " + android.os.Build.MODEL + ","
+ android.os.Build.VERSION.SDK + ","
+ android.os.Build.VERSION.RELEASE);
TABhost
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent" android:id="@+id/tabhost" >
<LinearLayout android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent">
<!-- TabWidget的id属性必须为 @android:id/tabs-->
<TabWidget android:id="@android:id/tabs" android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" />
<!-- FrameLayout的id属性必须为 @android:id/tabcontent-->
<FrameLayout android:id="@android:id/tabcontent" android:layout_width="fill_parent" android:layout_height="fill_parent">
<LinearLayout android:id="@+id/view1" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#FF0000">
<TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:text="这是1" />
</LinearLayout>
<LinearLayout android:id="@+id/view2" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#00ff00" >
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是2" />
</LinearLayout>
<LinearLayout android:id="@+id/view3" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#0000FF">
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="这是3" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
</TabHost>
// 获取TabHost对象
TabHost tabHost = (TabHost)findViewById(R.id.tabhost);
// 如果没有继承TabActivity时,通过该种方法加载启动tabHost
tabHost.setup();
tabHost.addTab(tabHost.newTabSpec("tab1").setIndicator("第一个标签",getResources().getDrawable(R.drawable.ic_launcher)).setContent(R.id.view1));
tabHost.addTab(tabHost.newTabSpec("tab3").setIndicator("第三个标签").setContent(R.id.view3));
tabHost.addTab(tabHost.newTabSpec("tab2").setIndicator("第二个标签").setContent(R.id.view2));
TabSpec tp = tabHost.newTabSpec("tab4").setIndicator("第4个标签").setContent(R.id.view2);
tabHost.addTab(tp);
------------------------------------------------------
include 重用布局
<include android:layout_width="wrap_content"
android:layout_height="wrap_content"
layout="@layout/laa" />
<include android:layout_width="fill_parent"
android:layout_height="fill_parent"
layout="@layout/lbb" />
laa 和lbb 是正常布局文件
merge 标签是继承父分类的布局样式。
<merge xmlns:android="http://schemas.android.com/apk/res/android"> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/add"/> <Button android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/delete"/> </merge>
-------------------------------------------------
最近在做android项目的时候遇到一个问题,应用程序初始化时需要批量的向sqlite中插入大量数,导致应用启动过慢。
android使用的是sqlite数据库,sqlite是比较轻量级的数据库,在Google了之后发现,sqlite事务处理的问题,在sqlite插入数据的时候默认一条语句就是一个事务,有多少条数据就有多少次磁盘操作。我的应用初始5000条记录也就是要5000次读写磁盘操作。
解决方法:
添加事务处理,把5000条插入作为一个事务
dataBase.beginTransaction(); //手动设置开始事务
//数据插入操作循环
dataBase.setTransactionSuccessful(); //设置事务处理成功,不设置会自动回滚不提交
dataBase.endTransaction(); //处理完成
应用中的清理数据,会清理掉除去lib文件夹(含内部文件)的文件及文件夹。
/sdcard/Android/data/这个目录也是和包名相关的,但是系统中的清理数据不会清理掉这个目录中的相关信息。
实现两个 Activity 切换时的动画
有两个参数:进入动画和出去的动画。
注意
1、必须在 StartActivity() 或 finish() 之后立即调用。
2、而且在 2.1 以上版本有效
3、手机设置-显示-动画,要开启状态
overridePendingTransition(R.anim.fade, R.anim.hold);
样式和主题
样式