Android學習之路(4)——小案例

本案例完成一個裝備案例

看下我們需要完成的效果:


登錄界面(activity_register.xml)

register.xml

信息界面(activity_info.xml)

info.xml

角色界面(activity_char.xml)

char.xml

裝備界面(activity_shop.xml)

shop.xml

現在我們看下完成這些界面的代碼,以及mainActivity.java文件。

我們首先看下關於register的xml文件的相關佈局格式:

register
主要控件包括: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,然後選擇需要構建的方法。

至此完成,這個小案例。再編程的過程中會遇到很多小問題,要積極去解決。加油!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章