喝酒不骑马的Android自学日记(3)

来源:互联网 发布:淘宝怎么登录不上去 编辑:程序博客网 时间:2024/05/01 23:27
喝酒不骑马的Android自学日记(3)***2015年12月11日


ToggleButtond的使用。
 
<ToggleButton        android:textOn="开"        android:textOff="关"        android:layout_width="match_parent"        android:layout_height="wrap_content"        android:id="@+id/toggleButton"        android:checked="false" />




textOn/Off:设置开启或关闭时,按钮上显示的文本。
checked="false",如果不设置的话,默认也是关闭的状态。


在MainActivity里使用控件。在主类里导入接口
public class MainActivity extends AppCompatActivity implements CompoundButton.OnCheckedChangeListener
然而初始化控件
 
private ToggleButton tb;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tb = (ToggleButton) findViewById(R.id.toggleButton);        tb.setOnCheckedChangeListener(this);//监听器    } @Override    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {    }



会添加一个onCheckedChanged方法。
其中buttonView:代表被点击控件的本身
isChecked:代表被点击控件的状态(true,false)
判断isChecked的状态,然后可以选择不同状态下,两个控件的状态。(ischecked?xxx:xxx)


CheckBox:
 <CheckBox        android:checked="false"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="猴子"        android:id="@+id/checkBox" />




在MainActivity里
 
private CheckBox cb;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        cb = (CheckBox) findViewById(R.id.checkBox);        cb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {            @Override            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                Log.i("tag",isChecked+"");                if(isChecked){                    String text = cb.getText().toString();                    Log.i("tag",text);                }            }        });




不论CheckBox选中与否,都可以对应触发需要的程序。这里的话,如果选中了CheckBox,日志会输出true和猴子。如果取消选中,日志会输出false。


RadioGroup和RadioButton。RadioButton单独使用的时候,选中了就不能再取消了。所以不建议RadioButton单独使用,一般都是用RadioGroup。
在XML里建立文件拖入控件RadioGroup。Android Studio里的RadioGroup和Eclipse里的不太一样,Studio里的RadioGroup在Container文件夹下。类似于一个布局框,在这个不布局里,拖入RadioButton控件,实现group的功能。
在MainActivity里的初始化,建立监听和之前一样。这里,关于RadioGroup的实例,是通过方法onCheckedChanged(RadioGroup group,int checkedId){}实现的。
这里有两个参数。RadioGroup代表是哪个group,后面的checkedId是用来判断哪个button被选中了。
可以用switch
swich(checkedId){
case R.id.xxx:
xxxx;
case R.id.xxx:
xxxx;
}


关于五大布局
线性布局LinearLayout
相关的常用属性:
对于LinearLayout本身来说:
android:orientation="vertical"---决定子类控件的排布方式(vertical垂直;horizontal水平)
android:gravity="center"---决定子类控件的xy位置
有关的常用的属性center_vertical:垂直居中,center_horizontal:水平居中,center:水平垂直居中
right:靠右,left:靠左,bottom:在底部
这些属性可以并行使用,用“|”隔开
比如android:gravity="bottom/right"
对于LinearLayout的子类控件来说:
android:layout_gravity="bottom"---指本身在当前父类容器的xy位置
android:layout_weight="1"---指本身控件占当前父类容器的比例




相对布局RelativeLayout
每个控件是相对于另一个控件位置布局。
子类控件在RelativeLayout中常用到的属性
android:layout_alignParentLeft="true"---子类控件相对于父类容器靠左
android:layout_alignParentTop="true"---……靠上
android:layout_maginLeft="41dp"---子类控件距离父类容器左边的距离
android:layout_marginTop="33dp"---……上边
android:layout_centerInParent="true"---垂直居中
上边这些都是控件相对于父类容器的布局
android:layout_below="@+id/button"
等等,这是相对于某个控件的布局




帧布局FrameLayout
控件会覆盖前面的控件。不能随意指定位置。


绝对布局AbsoluteLayout
指定坐标,排布控件。由于手机屏幕尺寸不一样,所以开发中不经常用。
android:layout_x="xxxdp"
android:layout_y="xxxdp"


表格布局TableLayout
模型以行列的形式管理子控件,每个行为一个TableRow的对象,也可以是一个View对象。
TableLayout的全局属性
android:collapseColumns="1,2"---隐藏从0开始的索引列。列直接必须用逗号隔开:1,2,5
android:shrinkColumns="1,2"---收缩从0开始的索引列。可以用"*"代替收缩所有列
android:stretchColumns="1,2"---拉伸从0开始的索引列。


TableLayout的局部属性
android:layout_column="1"---该控件显示在第二列
android:layout_span="2"---该控件占据第二列


如何快速把文本写入Value下的strings.xml文件中
在Android Studio的xml的Design中,双击控件,然后点“...”。在New String Value Resource中写入新的文本。




********Activity*********
Activity的生命周期:
四种状态↓↓↓
--活动状态(Active/Running)Activity处于界面的最顶端,获取焦点。
--暂停状态(Paused)Activity失去焦点,但对用户可见。
--停滞状态(Stopped)Activity被完全遮挡,但保留所有状态和成员信息。
--非活动状态(Killed)Activity被停止。


--onCreate();创建
--onStart();运行
--onResume();获取焦点
--onPause();失去焦点
--onSrop();暂停
--onDestroy();销毁
--onRestart();重启


那阵想到一个问题。关于一个Activity运行的逻辑,都写在onCreate里了。而已个Activity一开始运行,会从onCreate开始一直走到onResume。那为啥,比如一个button的实例,可以在onResume的状态下,还可以执行?后来屁冉给了我解释,说button注册到类里,也就是MainActivity里,在整个类里面都可以用。后来粗略查了一下书,暂时没找到相关的说明。等看到那章时再详细研究。


关于页面的切换---用Intent(意图,协助完成Android各个组件之间的通讯)
跳转启动方式:
1:startActivity(intent)
2:startActivityForResult(intent,requestCode)


无返回值的页面跳转:
建立两个Activity→FActivity&FActivity
Intent intent = new Intent(packageContext,cls);
这里有两个参数。第一个参数,是一个上下文对象。第二个参数是目标文件。
然后startActivity(intent);执行这个意图。

有返回值的页面跳转:
在FActivity下:
startActivityForResult(intent,1);
第一个参数是Intent对象,第二个参数是请求的一个标识。
在下面重载方法
@Overrideprotected void onActivityResult(int requestCode,int resultCode,Intent data);{super.onActivityResult(requestCode,resultCode,data);if(requestCode == 1&&result == 2){}}




在FActivity下:
Intent data = new Intent();
setResult(2,data);


也就是说,在请求标识和结果标识符合要求的时候,执行request的一个方法。实现数据的传递。




2015年12月11日
-----------------------------------------------------------------------------------------
0 0
原创粉丝点击