2017.3.24
xml布局
1.我们学的是LinearLayout线性布局,布局前先确定好界面的整体排版,竖着的用android:orientation="vertical",横的用android:orientation="horizontal",利用android:padding="xxdp"来美化边框,使得界面不挨边
。
2.使用界面控件的时候,有开就得有关,例如
跑马灯效果
android:ellipsize="marquee"
android:focusable="true"
android:focusableInTouchMode="true"
android:marqueeRepeatLimit="marquee_forever"
android:scrollHorizontally="true"
android:scrollbars="horizontal"
android:singleLine="true" --这些为创建跑马灯关键语句
.java
1.如何编写.java事件
在.java下编写时,我们先得定义变量,例如private EditText extizhong;
再建立相关的事件响应extizhong=(EditText)findViewBy
Id(R.id.tizhong);(extizhong为我们定义的变量名,tizhong为xml界面中我们定义的一个EditText组件的id,id和控件一定要保持一致,不然无法运行或者闪退)
最后添加相应的监听事件,来实现自己想要实现的指令,例如:
btnjisuan.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//实现指令的方法代码
}
});
2.运用相关的方法
在protected void最后点击右键
选中Generate...
选中Override Methods...
最后在app目录下找
常用控件及其用法
TextView
1.常用属性:
2.常用于:(1)用于显示标题或者文字,例如在.xml下输入 android:text="你想输入的文字"(2)用于输出你想要的文字,例如在.java下输入txbiaoti.setText("你想输出的文字");
EditText
1.常用属性
2.常用于:用户可以输入数据,从而传给android应用
Button
1.常用于:确定,取消,退出等按钮
2.按钮的单击事件
(1)在xml布局文件中设置Button的属性,即android:onClick="myclick",然后在该布局文件对应的Acitivity中实现该方法。例如:
public void myclick(View view){
//方法
}
(2)使用setOnClickListener添加监听事件,例如:
btnjisuan.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
//实现指令的方法代码
}
});
ImageView
1.常用属性
2.常用于显示图片。常用的有2种方法,一种是在xml界面android:src="@drawable/图片名",一种是在.java中ivtupian.setImageResource(R.drawable.图片名)
RadioButton
使用多个RadioButton而确保单选时,可以用RadioGroup,例如:
<RadioButton
android:id="@+id/meihua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginRight="@dimen/activity_vertical_margin"
android:checked="true"
android:text="梅花 "
android:textSize="20sp" />
<RadioButton
android:id="@+id/shinanhua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="石楠花 "
android:textSize="20sp" />
<RadioButton
android:id="@+id/xiangyahua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="象牙花"
android:textSize="20sp" />
</RadioGroup>
<RadioGroup
android:id="@+id/rg2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center"
android:orientation="horizontal">
<RadioButton
android:id="@+id/xiuqiuhua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="绣球花"
android:textSize="20sp" />
<RadioButton
android:id="@+id/shilanhua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="石兰花 "
android:textSize="20sp" />
<RadioButton
android:id="@+id/mudanhua"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="牡丹花"
android:textSize="20sp" />
</RadioGroup>
而2个或2个以上RadioGroup组时保证单选时,则要在.java中编写,可以通过监听RadioGroup来实现单选,例如:
//在定义变量和建立相关的事件响应基础上
rgrg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if (rbmeihua.isChecked()) {
ivtupian.setImageResource(R.drawable.meihua);
rgrg2.clearCheck();
}
if (rbshinanhua.isChecked()) {
ivtupian.setImageResource(R.drawable.shinanhua);
rgrg2.clearCheck();
}
if (rbxiangyahua.isChecked()) {
ivtupian.setImageResource(R.drawable.iangyahua);
rgrg2.clearCheck();
}
}
});
rgrg2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if (rbxiuqiuhua.isChecked()) {
ivtupian.setImageResource(R.drawable.xiuqiuhua);
rgrg.clearCheck();
}
if (rbshilanhua.isChecked()) {
ivtupian.setImageResource(R.drawable.shilanhua);
rgrg.clearCheck();
}
if (rbmudanhua.isChecked()) {
ivtupian.setImageResource(R.drawable.mudanhua);
rgrg.clearCheck();
}
}
});
CheckBox
用于多选或者只有一个选项的情况。建立方法如下:
它的监听事件:
cbjava.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
//方法
}
});
Android常见事件
onTouchEvent事件
常用方法:
1.MotionEvent.getAction()
(1)屏幕按下时,MotionEvent.getAction()值为MotionEvent.ACTION_DOWN
(2)屏幕抬起时,MotionEvent.getAction()值为MotionEvent.ACTION_UP
(3)屏幕滑动时,MotionEvent.getAction()值为MotionEvent.ACTION_MOVE
2.MOtionEvent.getX()||MOtionEvent.getY()
例如:
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
float x = event.getX();
float y = event.getY();
String pos = "x坐标" + x + "y坐标" + y;//获取鼠标的x,y坐标值
Toast.makeText(this, pos, Toast.LENGTH_LONG).show();//通过Toast文本方法实现输出坐标值
}
return super.onTouchEvent(event);
}
键盘事件
键盘事件主要用于对键盘事件的监听,根据用户输入内容对键盘事件进行跟踪。
例如监听手机上的退出:
private long exitTime = 0;
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {//判断手机上退出键
if ((System.currentTimeMillis() - exitTime) > 2000) {
Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show();
exitTime = System.currentTimeMillis();
} else {
finish();
System.exit(0);
}
return true;
}
return super.onKeyDown(keyCode, event);
}//参考于百度http://www.cnblogs.com/jxgxy/archive/2012/08/23/2653404.html
菜单与消息通知
菜单
1.在res上面右键->New->Android resource directory
2.点击之后,出现下图Resource type选择menu
3.menu上面右击,如下图选择:
4.file name随便取名字
进入mune.xml界面中后,一种是直接写代码
还有一种如下如图
拖动左上角MenuItem,然后在属性见面编辑
5.最后在.java下输入重载方法即可
@Override
public boolean onCreateOptionsMenu(Menu menu){
getMenuInflater().inflate(R.menu.mune,menu);
return true;
}
对话框
利用重载方法onOptionsItemSelected,例如:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_about:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setTitle("关于");//为对话框设置标题
builder.setIcon(R.mipmap.ic_launcher);//为对话框设置图标
builder.setMessage("版本为1.0");//为对话框设置内容
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
//把自己关掉
dialogInterface.dismiss();
//整个关掉
MainActivity.this.finish();
}
});
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
}
});
builder.setNeutralButton("退出", null);
//创建并显示
builder.create().show();
break;
}
return false;
}
结果如下:
错误总结
1.闪退情况
解决方案:
定义变量:private RadioButton rbmeihua;
建立相关事件响应:rbmeihua = (RadioButton) findViewById(R.id.meihua);
要注意xml布局中id名相对应的控件和相对应的变量,千万不能搞错.
2.
xml布局中所有的控件有头必有尾,例如
3.
重载方法最好在
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
的后面点击右键找,不然不同的位置有不同的重载方法,容易找不到。
4.
跑马灯效果必须要在字超过一行的情况下,不然用不了。
5.
想不出啥了,有问题的一起分享解决。