通过这两天的学习,总结出了一些琐碎的小知识,但却是不可或缺的,贴出来以便以后用到,希望也会给那些个初学者带来便易的理解。琐碎的知识点以后还会出现,希望自己能在这种积累中,在android软件的开发这条路上走得更好!!
打开两个模拟器的命令:
进入环境目录:android-sdk-windows/tools/,命令:emulator -data foo
1.当Activity处于onResume(),onStop(),onDestroy()状态时Activity会被Android系统杀死,再次执行时调用onCreate()原来的东西会丢掉。这时,调用onSaveInstanceState()方法,其中的Bundle保存原来的信息。
protected void onSaveInstanceState(Bundle outState)
{
super.onSaveInstanceStat(outState);
}
======================================================================================================
2.在文件夹assets中的文件android工具都会把他打包进去,而res文件夹中的文件只有在使用的时候才会打包。
======================================================================================================
3.TextView控件的使用:
a.创建Textview对象 b.设置文本 c.使用setContentView()将控件加载到Activity上。
***********************************
TextView tv=new TextView(this);
tv.setText("你好");
setContentView(tv);
***********************************
方法二:修改.xml文件
在.xml文件中添加TextView组件
******************************************
<TextView
android:id="@+id/textview01"
android:layout_width="wrap_content"
android:layout_height="fill_parent"
android:text="你好"
></TextView>
******************************************
TextView属性:
1.a:设置字体大小用sp作为单元
b: 设置宽度和高度时用dp作为单元
例如:
********************************
* 在布局文件.xml中的TextView添加*
* android:textSize="20sp" *
********************************
2.设置颜色
a.改变TextView字体颜色
********************************
* 在布局文件.xml中的TextView添加*
* android:textColor="#00FF00" *
********************************
b.改变部分字体颜色
首先, 在.xml中的TextView中添加id
******************************
*android:id="@+id/textview01"*
*android:text="@string/hello"*
******************************
再次,
**************************************************************************************************************
* TextView textView=(TextView) *
* findViewById(R.id.textview01); *
* textView.setText(Html.fromHtml("欢迎大家收看<font color=blue>《android开发从零开始》</font>系列课程")); *************************************************************************************************************
c.控制整个字体的颜色
***********************************************************************************************
* TextView textView=(TextView) *
* findViewById(R.id.textview01); *
* String str="欢迎大家收看《abdroid开发从零开始》系列课程。感谢大家的支持。"; *
* SpannableStringBuilder style=new SpannableStringBuilder(str); *
* style.setSpan(new ForegroundColorSpan(Color.RED),0,6,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); *
* style.setSpan(new ForegroundColorSpan(Color.GREEN),6,21,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);*
* style.setSpan(new ForegroundColorSpan(Color.BLUE),21,34,Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);*
* textView.setText(style); *
***********************************************************************************************
3.设置超链
###autoLink设置是否当文本为URL链接/email/电话号码/map时,文本显示为可点击的链接。可选值(none/web/email/phone/map/all)
在.xml文件中添加:
**********************************************************************************************************************
* android:autoLink="phone" *
* android:text="欢迎大家收看《abdroid开发 从零开始》系列课程。感谢大家的支持。\n我的博客:http://blog.csdn.net//coolsz\n*
* 我的电话:18736566" * ********************************************************************************************************************** ###跑马灯效果
android:ellipsize设置当文字过长时,该控件该如何显示。有如下设置:
"start"--省略号显示在开头;
"end"--省略号显示在结尾;
"middle"--省略号显示在中间;
"marquee"--一跑马灯方式显示(动画横向移动);
android:marqueeRepeaLimit在ellipsize指定marquee的情况下,设置重复滚动的次数,当设置为marquee_forever时表示无限次。
android:focusablelnTouchMode:是否在触摸模式下获得焦点。
android:focusable控件是否能够获取焦点
在.xml文件中添加:
*****************************************************************************
*android:singleLine="true"//设置为单行 *
*android:focusable="true"//是否能够获取焦点 *
*android:ellipsize="marquee" *
*android:marqueeRepeatLimit="marquee_forever"//设置滚动次数为无限次 *
*android:focusableInTouchMode="true"//是否在触摸模式下获得焦点(控制字幕的滚动)*
******************************************************************************
4.EditText的使用:(EditText是TextView的子类TextView的属性EditText也可以使用)
添加:
**************************************
*<EditText *
*android:layout_width="fill_parent" *
*android:layout_height="wrap_content"*
*/> *
**************************************
其中,移除聚焦的方法是:设置两个EditText,将第一个的宽和高都设置为“0”,这样就可以将第一个隐藏,变相的移除了聚焦。
属性:
a.限制输入的字符个数:
android:maxLength="11"
b.设置多行文本框,默认情况为多行,若想为单行输入则:
android:singleLine="true"
c.限制EditText输入的信息:
android:inputType="number"
d.设置提示信息:
android:hint="我是EditText"(编辑框中为灰色字体,添加内容后灰色字体消失)
e.在EditText中显示图片:
adroid:drawableLift="@drawable/title"(将截取的图片(title.jpg)放置在drawable-mdpi文件夹中)
f.设置圆角:
android:background="@drawable/sharp"
{ 首先在drawable-mdpi文件夹中添加sharp.xml文档
*******************************************************************
*<?xml version="1.0" encoding="utf-8"?> *
*<sharp xmlns:android="http://schemas.android.com/apk/res/android"*
*android:sharp="rectangle" *
*<!-- 填充的颜色--> *
*<solid android:color="#FFFFFF"/> *
*<!-- 设置四个角的角度为弧形 --> *
*<!-- android:radius 弧形的半径--> *
*<corners android:radius="7dip"/> *
*</sharp> *
*******************************************************************
}
========================================================================================================================
Button控件的使用:
首先,在.xml文件夹中添加Button组件
**************************************
*<Button *
*android:id="@+id/btn1" *
*android:layout_width="wrap_content" *
*android:layout_height="wrap_content"*
*android:text="点我" *
*/> *
**************************************
结果出现“点我”按钮,但是单击后没有时间出现,下面给Button按钮添加单击事件:
a.在MainActivity文件中声明全局变量:
private Button btn1=null;
b.查找变量:
btn1=(Button)findViewById(R.id.btn1);
c.添加监听事件:
btn1.setOnClickListener(new OnClickListener()
public void OnClick(View v)
{
Toast.makeText(MainActivity.this,"你点击了按钮",Toast.LENGTH_LONG).show();
});
========================================================================================================================
Intent的使用:
1.拨打电话:
Intent intent=new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+telPhone));
在清单文件中的<applicaton/>外面添加使用权限:
<uses-permission
android:name="android.permission.CALL_PHONE"
/>
在.java文件中添加:
***********************************************************
* private OnClickListener listener=new OnClickListener(){ *
* public void onClick(View v) { *
* Intent intent=new Intent(); *
* intent.setAction(Intent.ACTION_CALL); *
* intent.setData(Uri.parse("tel:18736566127"));*
* startActivity(intent); *
* } *
*}; *
***********************************************************
2.发送短息:
Intent intent=new
Intent(Intent.ACTION_SENDTO,Uri.parse("smsto:5554"));
intent.putExtra("sms_body","Hello");
startrActivity(intent);
在清单文件中的<applicaton/>外面添加使用权限:
<uses-permission
android:name="android.permission.SEND_SMS"
/>
3.启动新的Activity:
a.
添加一个新的SecondActivity和一个新的布局文件second.xml
**********************************************************
* public class SecondActivity extends Activity { *
* protected void onCreate(Bundle savedInstanceState) {*
* super.onCreate(savedInstanceState); *
* setContentView(R.layout.second); *
* } *
* } *
**********************************************************
*<TextView *
*android:layout_width="fill_parent" *
*android:layout_height="wrap_content" *
*android:text="second" *
*/> *
*<Button *
*android:id="@+id/secondbtn" *
*android:layout_width="wrap_content" *
*android:layout_height="wrap_content" *
*android:text="second" *
*/> *
**********************************************************
在MainActivity通过Intent来启动SecondActivity需求:
**********************************************************************
*public void onCreate(Bundle savedInstanceState) { *
* super.onCreate(savedInstanceState); *
* setContentView(R.layout.main); *
* btn=(Button)findViewById(R.id.btn); *
* btn.setOnClickListener(Listener); *
* } *
*private OnClickListener Listener=new OnClickListener() { *
* public void onClick(View v) { *
* Intent intent=new Intent(); *
* intent.setClass(MainActivity.this, SecondActivity.class);*
* startActivity(intent); *
* } *
* }; *
*} *
**********************************************************************
完成以上步骤后运行会有错误出现,原因是没有在AndroidManifest.xml文件中注册SecondActivity。
*****************************************************************************************
*<activity android:name=".SecondActivity" *
* android:label="@string/app_name"> //""内的内容是默认的,也可以自行添加*
* </activity> *
*****************************************************************************************
b.
实现参数的传递到第二个Activity:
首先,在.xml文件中的TextView中添加
*****************************
*android:id="@+id/secondTxt"*
*****************************
其次,在SecondActivity中添加
*******************************************************
*protected void onCreate(Bundle savedInstanceState) { *
* super.onCreate(savedInstanceState); *
* setContentView(R.layout.second); *
* Intent intent=getIntent(); *
* Bundle bundle=intent.getExtras(); *
* String str=bundle.getString("str"); *
* secondTxt=(TextView)findViewById(R.id.secondTxt); *
* secondTxt.setText(str); *
* } *
*******************************************************
在MainActivity中添加:
***********************************************************
*intent.setClass(MainActivity.this, SecondActivity.class);*
*intent.putExtra("str", "Intent Demo"); *
*startActivity(intent); *
***********************************************************
c.如何接受第二个类返回的一个结果:
在MainActivity中添加:
声明变量:
private final static int REQUEST_CODE=1;
*********************************************************************************************
*protected void onActivityResult(int requestCode, int resultCode, Intent data) { *
* if(requestCode==REQUEST_CODE) *
* { *
* if(resultCode==SecondActivity.RESULT_CODE) *
* { *
* Bundle bundle=data.getExtras(); *
* String str=bundle.getString("back"); *
* Toast.makeText(MainActivity.this,str,Toast.LENGTH_LONG).show();*
* } *
* } *
*********************************************************************************************
在SecondActivity中添加:
声明变量:
public final static int RESULT_CODE=1;
private Button seconButton;
************************************************************
*seconButton=(Button)findViewById(R.id.secondbtn); *
* seconButton.setOnClickListener(listener); *
* } *
* private OnClickListener listener=new OnClickListener()*
* { * finish()每一个活动程序都会对应一个窗体,当有两个窗体时,由A
* * 窗体调用出B窗体,再由窗体B回到窗体A,可以在B的活动程序上采用
* public void onClick(View arg0) { * finish()方法关掉活动B,同时也不再显示B窗口。
* Intent intent=new Intent(); *
* intent.putExtra("back", "Back Data"); * isfinish()来判断是否已采用finish()方法结束。在onPause()时
* setResult(RESULT_CODE,intent); *最有机会采用isfinish()方法来判断是否要保持目前应用程序状态
* finish(); *系统内存不足时
* } *
* 系统内存不足时会调用onLowMemory()方法,让系统释放更多的内存
* }; *
************************************************************
=========================================================================================================================
Activity的生命周期:
void onCreate(Bundle savedInstanceState)
void onStart() //开始
void onRestart() //同时启动onstart()事件,将活动程序再度队列到就绪状态
void onResume() //交给中央处理器处理
void onPause() //就绪
void onStop() //停止
void onDestory() //结束
=========================================================================================================================
视图的可视性:
Visible:可视的,设置初始值
Invisible:不可视的,但视图仍然存在
Gone:视图已不存在
=========================================================================================================================
以下是一些拾贝:
1.ScrollView布局中滚动条的方向属性是scrollbars。如:android:scrollbas="vertical"
2.LinearLayout布局中要指明方向orientation。如:android:orientation="horizontal"
3.控制与父窗体间距的属性layout_marginLeft。如:android:layout_mardinLeft="10dp"
4.EditText布局中自己位置的属性gravity。如:android:gravity="top"
提示信息属性为hint。如:android:bint="姓名"
指定数值输入的属性是phoneNumber。如:android:phoneNumber="true"
5.与父窗体左边对齐用alignParentLeft。如:android:alignParentLeft="true"
6.在一个对话框中水平居中属性为centerHorizontal.如:android:layout_centerHorizontal="true"
7.添加头像时用到的方法是setImageResource(images[]),参数是一个图片的id。setImageResource的作用就是将此图片设置为绘图内容。
8.设置一个对话框要用到类alertDialog,此类有三种构造方法: a.AlertDialog(Context context){};
b.AlertDialog(Context context,int theme){};
c.AlertDialog(Context context,Boolean cancelable,DialogInterface.OnCancelListener cancelListener){}.
9.设置一个按钮用类ImageButton,他可以显示按钮的信息,也就是不用设置text就可以将按钮名称设置上。
public AlertDialog.Builder setNegativeButton (CharSequence text, DialogInterface.OnClickListener listener)
10.对于字符串变量来说,“==”运算符用于比较两个变量本身的值,即两个对象在内存中的首地址;“equals()”方法比较的是两个字符串中所包含的内容是否相同。
对于非字符串来说,“==”和“equals()”方法都用来比较其所指对象在堆内存中的首地址。
11.为对话框设置标题用AlertDialog.Builter类的方法setTitle(CharSequence title)