作为一个android专业出身的我竟然快不会写android代码了(吐槽自己的废话)
接下来这篇文章将对android基础常用的几个控件进行下复习。
在这布局方面的知识简单掠过。。。
布局;网格布局、帧布局、表格布局、绝对布局、
线性布局(LinearLayout): 通过权重灵活分配空间,
垂直,水平,可嵌套 (layout_gravity、gravity、 orientation、weight)特别注意layout_gravity和gravity的区别。
android:orientation="horizontal"
android:layout_weight="1"
相对布局(Relativelayout): 本身位于谁的那边 a位于b的右边 相对于b来说,a位于b的右边
(找参照物)
android:layout_toRightOf=""
android:layout_toRightOf=""
边缘对齐:alignParentxxx
帧布局:
放入其中的所有元素都被放置在最左上的区域,而且无法为这些元素指定一个确切的位置,下一个子元素会重叠覆盖上一个子元素.
配合Fragment使用。
配合Fragment使用。
注意:
控件
@1Button
先来回顾下写控件的步骤:
1).布局文件中创建一个Button控件;
2).声明控件;
3).绑定Id.
4).设置点击事件.
1、button的三种点击事件:
第一种:
匿名方式设置按钮点击事件。
(1)布局文件中声明一个按钮
<Button
android:id="@+id/myButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="10dp"
android:text="登录"
/>
(2) 见代码:
package com.xiaoning.demo;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.Toast;
import com.example.administrator.demoapplication.R;
public class MainActivity extends Activity {
//1.声明按钮控件
private Button myButton;
// 实现OnClickListener接口 、匿名内部类、设置点击事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2.绑定ID
myButton = (Button) findViewById(R.id.myButton);
//3.设置点击事件
myButton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
//弹出吐司
Toast.makeText(MainActivity.this, "我点击了按钮", Toast.LENGTH_LONG).show();
}
});
}
}
第二种:
实现OnClickListener接口
package com.xiaoning.demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.ImageButton; import android.widget.Toast; import com.example.administrator.demoapplication.R; public class MainActivity extends Activity implements OnClickListener { //1.声明按钮控件 private Button myButton; // 实现OnClickListener接口 、匿名内部类、设置点击事件 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //2.绑定ID myButton = (Button) findViewById(R.id.myButton); myButton.setOnClickListener(this); } // 必须实现OnClickListener接口 public void onClick(View view) { switch (view.getId()) { // button的id case R.id.myButton: //Intent意图 跳转到下一个Activity Intent intent = new Intent(MainActivity.this, ThirdActivity.class); MainActivity.this.startActivity(intent); break; case R.id.button1: Toast.makeText(MainActivity.this, "-->>1", Toast.LENGTH_LONG).show(); break; } } }
提前创建好Activity
第三种:
布局文件中设置点击事件
<Button android:id="@+id/myButton" android:layout_width="wrap_content" android:layout_height="wrap_content" android:padding="10dp" android:text="登录" android:onClick="SendMessage" />
public class MainActivity extends AppCompatActivity { //1.声明按钮控件 private Button myButton, Button1, Button2; // 响应按钮事件 public void SendMessage(View view) { // 在layout中注册 不用实现onClickListener 也不用绑定id Toast.makeText(MainActivity.this, "-->>3", Toast.LENGTH_LONG).show(); } }
还有一种ImageButton,和Buttonb不同的是imageButton没有text属性, 但是他继承于ImageView,有android:src="@drawable/xxx" 属性。 Button 继承 Textview。
<ImageButton android:id="@+id/myButton" android:layout_width="50dp" android:layout_height="wrap_content" android:padding="10dp" android:text="登录" android:src="@mipmap/ic_launcher" android:onClick="SendMessage" />
@2EditText TextView ImageView
上布局文件:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"> <EditText android:id="@+id/editText2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:hint="请输入用户名字:" /> <EditText android:id="@+id/editText1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/editText2" android:layout_alignRight="@id/editText2" android:layout_below="@id/editText2" android:inputType="textPassword" /> <EditText android:id="@+id/editText3" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@+d/editText1" android:layout_alignRight="@id/editText1" android:layout_below="@+id/editText1" android:inputType="phone"> <requestFocus /> </EditText><ImageView android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" android:src="@mipmap/ic_launcher" /><TextView android:id="@+id/text_edit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_above="@id/button1" android:layout_centerHorizontal="true" android:text="请输入姓名:" android:textColor="@color/colorPrimary" android:textSize="20dp" /></RelativeLayout>
package com.xiaoning.demo; import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.view.View.OnKeyListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; import com.example.administrator.demoapplication.R; public class EditText01 extends Activity { Button btn; EditText et1; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_edit_text01); //绑定ID btn = (Button) findViewById(R.id.button1); et1 = (EditText) findViewById(R.id.editText2); //看效果 btn.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { String value = et1.getText().toString(); if (value.equals("") || value == null) { et1.setError("请输入用户名字:"); } } }); //EditText的点击事件 et1.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_ENTER) { Toast.makeText(EditText01.this, "按下回车键", Toast.LENGTH_LONG).show(); } return false; } }); } }
@3各种Bar
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" > <ProgressBar android:id="@+id/progressBar1" style="?android:attr/progressBarStyleHorizontal" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentRight="true" android:layout_alignParentTop="true" /> <SeekBar android:id="@+id/seekBar1" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@id/progressBar2" android:layout_below="@id/progressBar2" android:layout_marginTop="103dp" /> <Button android:id="@+id/button1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_below="@id/ratingBar1" android:text="点击开始" /> <ProgressBar android:id="@+id/progressBar3" style="?android:attr/progressBarStyleLarge" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/progressBar1" android:layout_marginLeft="119dp" android:layout_marginTop="22dp" android:layout_toRightOf="@id/ratingBar1" /> <ProgressBar android:id="@+id/progressBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignLeft="@id/progressBar1" android:layout_alignTop="@id/progressBar3" /> <RatingBar android:id="@+id/ratingBar1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_below="@id/seekBar1" android:layout_centerHorizontal="true" /> </RelativeLayout>
代码就不详细说了。。
package com.xiaoning.demo; import android.app.Activity; import android.os.AsyncTask; import android.os.Bundle; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.RatingBar; import android.widget.SeekBar; import com.example.administrator.demoapplication.R; public class Progressbar extends Activity { ProgressBar pb = null; SeekBar sb = null; RatingBar rb = null; Button b = null; SeekBar和RatingBar都是ProgressBar的子类 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_progressbar); pb = (ProgressBar) findViewById(R.id.progressBar1); sb = (SeekBar) findViewById(R.id.seekBar1); rb = (RatingBar) findViewById(R.id.ratingBar1); b = (Button) findViewById(R.id.button1); pb.setMax(100); sb.setMax(100); b.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new MyTask().execute(); } }); sb.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onStopTrackingTouch(SeekBar seekBar) { } @Override public void onStartTrackingTouch(SeekBar seekBar) { // TODO Auto-generated method stub } @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { System.out.println("-->>" + progress); } }); rb.setOnRatingBarChangeListener(new RatingBar.OnRatingBarChangeListener() { @Override public void onRatingChanged(RatingBar ratingBar, float rating, boolean fromUser) { System.out.println("-->>" + rating); } }); } class MyTask extends AsyncTask<Void, Integer, Void> { @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); pb.setProgress(values[0]); } @Override protected Void doInBackground(Void... params) { int i = 1; while (i <= 100) { try { Thread.sleep(500); } catch (Exception e) { // TODO: handle exception } publishProgress(i); i++; } return null; } } }