本案例完成一个装备案例
看下我们需要完成的效果:
登录界面(activity_register.xml)
信息界面(activity_info.xml)
角色界面(activity_char.xml)
装备界面(activity_shop.xml)
现在我们看下完成这些界面的代码,以及mainActivity.java文件。
我们首先看下关于register的xml文件的相关布局格式:
主要控件包括:Textview,EditText,RadioGroup,RadioButton,Button等。主要布局格式为,RelativeLayout以及LinearLayout布局格式相配合。
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/activity_main"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="cn.edu.bzu.myapplication.MainActivity">
<LinearLayout
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="UserName:"
android:textSize="30sp"
/>
<EditText
android:id="@+id/et_username"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Please Input"
android:textSize="30sp"
/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/tv_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="PassWord:"
android:textSize="30sp"
/>
<EditText
android:id="@+id/et_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:hint="Please Input"
android:textSize="30sp"
/>
</LinearLayout>
<LinearLayout
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<RadioGroup
android:layout_marginLeft="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sex:"
android:textSize="30sp"/>
<RadioButton
android:layout_marginLeft="10dp"
android:id="@+id/rb_man"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Man"
android:textSize="26sp"/>
<RadioButton
android:id="@+id/rb_woman"
android:layout_marginLeft="20dp"
android:layout_gravity="center_vertical"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Woman"
android:textSize="26sp"
/>
</RadioGroup>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="50dp"
android:layout_marginTop="30dp"
>
<Button
android:id="@+id/btn_register"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="register"
android:textSize="20sp"
/>
<Button
android:id="@+id/btn_cancel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="cancel"
android:textSize="20sp"/>
</LinearLayout>
</LinearLayout>
</RelativeLayout>
实现相对功能的MainActivityjava代码
package cn.edu.bzu.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.RadioButton;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
Button b1,b2;
EditText et1,et2;
RadioButton rb1,rb2;
String username,password;
int sex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
b1=(Button)findViewById(R.id.btn_register);
b2=(Button)findViewById(R.id.btn_cancel);
et1=(EditText)findViewById(R.id.et_username);
et2=(EditText)findViewById(R.id.et_password);
rb1=(RadioButton)findViewById(R.id.rb_man);
rb2=(RadioButton)findViewById(R.id.rb_woman);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
}
public void onClick(View v)
{
switch (v.getId()){
case R.id.btn_register:
username=et1.getText().toString();
password=et2.getText().toString();
if(rb1.isClickable()){
sex=1;
}else if(rb2.isClickable()){
sex=2;
}
passData();
break;
case R.id.btn_cancel:
break;
}
}
public void passData()
{
Intent intent=new Intent(this,infoActivity.class);
Bundle bundle=new Bundle();
bundle.putString("username",username);
bundle.putString("password",password);
bundle.putInt("sex",sex);
// intent.putExtras(bundle);
// startActivity(intent);
startActivity(intent.putExtras(bundle));
}
}
关于activity_info.xml文件较简单,我们通过布局来看下。
实现其功能的infoActivity.Java代码
package cn.edu.bzu.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class infoActivity extends AppCompatActivity {
Button button;
TextView tv1,tv2,tv3;
String sex,username,password;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_info);
button=(Button)findViewById(R.id.button);
tv1=(TextView)findViewById(R.id.info_username);
tv2=(TextView)findViewById(R.id.info_password);
tv3=(TextView)findViewById(R.id.info_sex);
Intent getData=getIntent();
Bundle bundle=getData.getExtras();
username=bundle.getString("username");
password=bundle.getString("password");
int code=bundle.getInt("sex");
if(code==1){
sex="man";
}else if (code==2){
sex="woman";
}
tv1.setText("Your username is " +username);
tv2.setText("Your sex is "+sex);
tv3.setText("Your password is "+password);
pass();
}
public void pass()
{
final Intent intent=new Intent(this,charActivity.class);
intent.putExtra("username",username);
intent.putExtra("sex",sex);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
startActivity(intent);
}
});
}
}
实现角色页面的xml文件,(activity_char.xml)
代码:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/infomation"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:textSize="30sp"
android:text="Test Charactor"
/>
<ImageView
android:id="@+id/timg"
android:layout_below="@+id/infomation"
android:layout_centerHorizontal="true"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/timg"
/>
<TextView
android:id="@+id/status"
android:layout_below="@+id/timg"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="Status"
android:textSize="26sp"
/>
<LinearLayout
android:id="@+id/life"
android:layout_marginLeft="20dp"
android:layout_below="@id/status"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="生命力:"
android:textSize="23sp"
/>
<ProgressBar
android:id="@+id/pb_life"
android:layout_marginLeft="10dp"
android:layout_width="200dp"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/tv_life"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="80"
android:textSize="23sp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/attack"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_below="@id/life"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="攻击力:"
android:textSize="23sp"
/>
<ProgressBar
android:id="@+id/pb_attack"
android:layout_marginLeft="10dp"
android:layout_width="200dp"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/tv_attack"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="80"
android:textSize="23sp"/>
</LinearLayout>
<LinearLayout
android:id="@+id/speed"
android:layout_marginTop="10dp"
android:layout_marginLeft="20dp"
android:layout_below="@id/attack"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="敏捷度:"
android:textSize="23sp"
android:id="@+id/textView" />
<ProgressBar
android:id="@+id/pb_speed"
android:layout_marginLeft="10dp"
android:layout_width="200dp"
android:layout_height="wrap_content"
style="@style/Base.Widget.AppCompat.ProgressBar.Horizontal"
android:layout_gravity="center_vertical"/>
<TextView
android:id="@+id/tv_speed"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="10dp"
android:text="80"
android:textSize="23sp"/>
</LinearLayout>
<Button
android:id="@+id/btn_buy"
android:layout_below="@+id/speed"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Buy"/>
</RelativeLayout>
CharActivity.java的代码实现
package cn.edu.bzu.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
public class charActivity extends AppCompatActivity implements View.OnClickListener{
Button button;
ImageView imageView;
TextView topic,status,tv_life,tv_attack,tv_speed;
ProgressBar pb_life,pb_attack,pb_speed;
int kind=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_char);
button=(Button)findViewById(R.id.btn_buy);
imageView=(ImageView)findViewById(R.id.timg);
topic=(TextView)findViewById(R.id.infomation);
status=(TextView)findViewById(R.id.status);
tv_life=(TextView)findViewById(R.id.tv_life);
tv_attack=(TextView)findViewById(R.id.tv_attack);
tv_speed=(TextView)findViewById(R.id.tv_speed);
button.setOnClickListener(this);
Intent getname=new Intent();
String username=getname.getStringExtra("username");
String sex=getname.getStringExtra("sex");
initProgress();
// pass();
}
@Override
public void onClick(View view) {
Intent intent=new Intent(this,shopActivity.class);
startActivityForResult(intent,1);
}
public void initProgress()
{
pb_life=(ProgressBar)findViewById(R.id.pb_life);
pb_attack=(ProgressBar)findViewById(R.id.pb_attack);
pb_speed=(ProgressBar)findViewById(R.id.pb_speed);
pb_life.setMax(1000);
pb_attack.setMax(1000);
pb_speed.setMax(1000);
pb_life.setProgress(40);
pb_attack.setProgress(20);
pb_speed.setProgress(10);
}
//
public void click(View view){
Intent intent=new Intent(this,shopActivity.class);
startActivityForResult(intent,1);
}
protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
if(data!=null){
if(resultCode==1){
if(requestCode==1){
Item info=(Item)data.getSerializableExtra("equipment");
//更新ProgressBar的值
updateProgress(info);
}
}
}
}
public void updateProgress(Item info){
int progress1=pb_life.getProgress();
int progress2=pb_attack.getProgress();
int progress3=pb_speed.getProgress();
pb_life.setProgress(progress1+info.getLife());
pb_attack.setProgress(progress2+info.getAttack());
pb_speed.setProgress(progress3+info.getSpeed());
tv_life.setText(pb_life.getProgress()+"");
tv_attack.setText(pb_attack.getProgress()+"");
tv_speed.setText(pb_speed.getProgress()+"");
}
}
shop界面的实现,其相对布局比较简单,给各位留个小小的悬念,提供图片给各位参考
其shopActivity.java的实现代码:
package cn.edu.bzu.myapplication;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.TextView;
public class shopActivity extends AppCompatActivity implements View.OnClickListener{
TextView tv1,l1,a1,s1;
private Item item;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_shop);
findViewById(R.id.shopItem).setOnClickListener(this);
tv1=(TextView)findViewById(R.id.tv_sward);
l1=(TextView)findViewById(R.id.l1);
a1=(TextView)findViewById(R.id.a1);
s1=(TextView)findViewById(R.id.s1);
Intent intent=getIntent();
item=new Item("金剑",40,10,10);
tv1.setText(item.getName());
l1.setText("生命力:"+item.getLife());
a1.setText("攻击力:"+item.getAttack());
s1.setText("敏捷度:"+item.getSpeed());
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.shopItem:
Intent put=new Intent(shopActivity.this,charActivity.class);
put.putExtra("equipment",item);
setResult(1,put);
break;
}
}
}
Item.java实现类:
package cn.edu.bzu.myapplication;
import java.io.Serializable;
/**
* Created by HZY on 2017/3/28.
*/
public class Item implements Serializable {
public Item(String name, int life, int attack, int speed) {
this.name = name;
this.life = life;
this.attack = attack;
this.speed = speed;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getLife() {
return life;
}
public void setLife(int life) {
this.life = life;
}
public int getAttack() {
return attack;
}
public void setAttack(int attack) {
this.attack = attack;
}
public int getSpeed() {
return speed;
}
public void setSpeed(int speed) {
this.speed = speed;
}
private String name;
private int life;
private int attack;
private int speed;
}
在这里教大家一个快捷键, 选中需要进行构建的名称按alt+insert,然后选择需要构建的方法。
至此完成,这个小案例。再编程的过程中会遇到很多小问题,要积极去解决。加油!