您的位置:首页 > 其它

案例----装备选择

2017-03-28 18:12 330 查看
学会综合应用各组件,深度理解Activity,activity_main.xml及清单文件的关系






1.首先装备选择程序对应的布局文件activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

   xmlns:tools="http://schemas.android.com/tools"

   android:layout_width="match_parent"

   android:layout_height="match_parent"

   android:orientation="vertical"

   android:gravity="center"

   tools:context=".MainActivity">

   <ImageView  //在drawable下放入图像

      android:id="@+id/pet_imgv"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:layout_gravity="center_horizontal"

      android:layout_marginBottom="5dp"

      android:layout_marginTop="30dp"

      android:src="@drawable/baby"/>

   <TextView

      android:id="@+id/pet_dialog_tv"

      android:layout_width="wrap_content"

      android:layout_height="wrap_content"

      android:layout_gravity="center_horizontal"

      android:layout_marginBottom="25dp"

      android:gravity="center"

      android:text="主人,快给小宝宝购买装备吧"/>

   <TableLayout

      android:layout_width="fill_parent"

      android:layout_height="wrap_content"

      android:layout_gravity="center"

      android:layout_marginBottom="20dp">

      <TableRow

         android:layout_width="fill_parent"

         android:layout_height="wrap_content">

         <TextView

            android:layout_width="0dip"

            android:layout_height="wrap_content"

            android:layout_weight="1"

            android:text="生命值:

            android:textColor="@android:color/black"

            android:textSize="14sp"/>

         <ProgressBar

            android:id="@+id/progressBar1"

            style="?android:attr/progressBarStyleHorizontal"

            android:layout_width="0dip"

            android:layout_height="wrap_content"

            android:layout_gravity="center"

            android:layout_weight="2"/>

         <TextView

            android:id="@+id/tv_life_progress"

              android:layout_width="0dip"

              android:layout_height="wrap_content"

              android:layout_weight="1"

              android:text="0"

              android:gravity="center"

              android:textColor="#000000"/>

      </TableRow>

      <TableRow

         android:layout_width="fill_parent"

         android:layout_height="wrap_content"

         <TextView

              android:layout_width="0dip"

              android:layout_height="wrap_content"

              android:layout_weight="1"

              android:text="攻击力"

              android:textColor="@android:color/black"

              android:textSize="14sp"/>

         <ProgressBar

              android:id="@+id/progressBar2"

              style="?android:attr/progressBarStyleHorizontal"

              android:layout_width="0dip"

              android:layout_height="wrap_content"

              android:layout_weight="2"/>

         <TextView

              android:id="@+id/tv_attack_progress"

              android:layout_width="0dip"

              android:layout_height="wrap_content"

              android:layout_weight="1"

              android:text="0"

              android:gravity="center"

              android:textColor="#000000"/>

      </TableRow>

      <TableRow

         android:layout_width="fill_parent"

         android:layout_height="wrap_content"

         <TextView

              android:layout_width="0dip"

              android:layout_height="wrap_content"

              android:layout_weight="1"

              android:text="敏捷"

              android:textColor="@android:color/black"

              android:textSize="14sp"/>

         <ProgressBar

              android:id="@+id/progressBar3"

              style="?android:attr/progressBarStyleHorizontal"

              android:layout_width="0dip"

              android:layout_height="wrap_content"

              android:layout_weight="2"/>

         <TextView

              android:id="@+id/tv_speed_progress"

              android:layout_width="0dip"

              android:layout_height="wrap_content"

              android:layout_weight="1"

              android:text="0"

              android:gravity="center"

              android:textColor="#000000"/>

      </TableRow>

   </TableLayout>

   <RelativeLayout

      android:layout_width="match_parent"

      android:layout_width="wrap_content"

      android:layout_marginLeft="50dp"

      android:layout_marginRight="50dp"  

      android:layout_marginTop="20dp">

   <Button

      android:id="@+id/btn_baby"    

      android:layout_width="match_parent"

      android:layout_width="wrap_content"

      android:drawablePadding="3dp"

      android:drawableRight="@android:draeable/ic_menu_add"

      android:onClick="click"

      android:text="小宝宝购买装备"

      android:textSize="14sp"/>

   </RelativeLayout> 

</LinearLayout>

注意:上面用到控件了ProgressBar(进度条)它一般用于访问网络展示Loading,有两种表现形式,水平和环形。

它的表现形式是由style属性控制的。

2.在新建layout,购买装备界面activity_shop,xml

<?xml version="1.0" encoding="utf-8"?>

<RealtiveLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:id="@+id/rl"

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    android:orientation="vertical">

    <View

       android:layout_width="30dp"

       android:layout_height="30dp" 

       android:background="@android:drawable/ic_menu_info_details"

       android:layout_centerVertical="true"

       android:layout_alignParentLeft="true"/>

    <TextView

       android:id="@+id/tv_name"

       android:layout_width="wrap_content"

       android:layout_height="wrap_content" 

       android:layout_centerVertical="true"

       android:layout_marginLeft="60dp"

       android:text="商品名称"

    <LinearLayout

       android:layout_width="wrap_content"

       android:layout_height="wrap_content" 

       android:layout_centerInParent="true"

       android:orientation="vertical">

         <TextView

            android:id="@+id/tv_life"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content" 

            android:textSize="13sp"

            android:text="生命力"/>

         <TextView

            android
4000
:id="@+id/tv_attack"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content" 

            android:textSize="13sp"

            android:text="攻击力"/>

         <TextView

            android:id="@+id/tv_speed"

            android:layout_width="wrap_content"

            android:layout_height="wrap_content" 

            android:textSize="13sp"

            android:text="速度"/>

    </LinearLayout>

</RelativeLayout>

3.创建ItemInfo类,用于封装装备信息

public class ItemInfo implements Serializable{

   private String name;

   private int acctack;

   private int life;

   private int speed;

   public ItemInfo(String name,int acctack,int life,int speed){

      this.name=name;

      this.acctack=acctack;

      this.life=life;

      this.speed=speed;

   }

   public String getrName(){

      return name;

   }

   public void setName(String name){

      this.name=nama;

   }

   public int get Acctack(){

      return acctack;

   }

   public void setAcctack(int acctack){

      this.acctack=acctack;

   }

   public int getLife(){

      return life;

   }

   public void setLife(int life){

      this.life=life;

   }

   public int getSpeed(){

      return speed;

   }

   public String toString(){

      return "[name="+name+",acctack="+acctack+",life="+life+",speed="+speed+"]";

   }

4.创建ShopActivity

public class ShopActivity extends Acyivity implements OnClickListener{

   private ItemInfo itemInfo;

   protected void onCreat(Bundle savedInstanceState){

      super.onCreat(savedInstanceState);

      setContentView(R.layout.activity_shop);

      itemInfo=new ItemInfo("金剑",100,20,20);

      findViewById(R.id.rl).setOnClickListener(this);

      TextView mLifeTV=(TextView)findViewById(R.id.tv_life);

      TextView mSpeedTV=(TextView)findViewById(R.id.tv_speed);

      TextView mAttackTV=(TextView)findViewById(R.id.tv_attack);

      //TextView显示字符串,这里传入int值编译不会报错,运行会出错

      mLifeTV.setText("生命值+"itemInfo.getLife());

      mNameTV.setText(itemInfo.getName()+"");

      mSpeedTV.setText("敏捷度+"itemInfo.getSpeed());

      mAttackTV.setText("攻击力+"itemInfo.getAcctack());

   }

   @Override

   public void onClick(View v){

       //TODO Auto-generated method stub

       switch(v.getId()){

       case R.id.rl:

          Intent intent=new Intent();

          intent.putExtra("equipment",itemInfo);

          setResult(1,intent);

          finish();

          break;

       }

   }

注意:setReult()方法的作用是让当前Activity返回到它的调用者。

5.界面交互(MainActivity)

public class MainActivity extends Activity{

   private ProgressBar mProgressBar1;

   private ProgressBar mProgressBar2;

   private ProgressBar mProgressBar3;

   private TextView mLifeTV;

   private TextView mAttackTV;

   private TextView mSpeedTV;

   protected void onCreat(Bundle savedInstanceState){

      super.onCreat(savedInstanceState);

      setContentView(R.layout.activity_main);

      mLifeTV=(TextView)findViewById(R.id.tv_life_progress);

      mAttackTV=(TextView)findViewById(R.id.tv_attack_progress);

      mSpeedTV=(TextView)findViewById(R.id.tv_speed_progress);        

      initProgress();

   }

   private void initProogress(){

      mProgressBar1=(ProgressBar)findViewById(R.id.progressBar1);

      mProgressBar2=(ProgressBar)findViewById(R.id.progressBar2);

      mProgressBar3=(ProgressBar)findViewById(R.id.progressBar3); 

   }

   //开启新的activity并且想获取他的返回值

   public vlid click(View view){

      Intent intent=new Intent(this,ShopActivity.class);

      startActivityForResult(intent,1);//返回请求结果,请求码为1

   }

   @Override

   protected void onActivityResult(int requestCode,int resultCode,Intent data){

      super.onActivityResult(requestCode,resultCode,data);

      if(data!=null){

         //判断结果码是否等于1,等于1为宝宝添加装备

         if(resultCode==1){

            if(requestCode==1){

               ItemInfo info=

                    (ItemInfo)data.getSerializableExtra("equipment");

               //gengxin ProgressBar的值

               updateProgress(info);

             }

         }

     }

   }

   //更新ProgressBar的值

   private void updateProgress(ItemInfo info){

      int progress1=mProgressBar1.getProgress();

      int progress2=mProgressBar2.getProgress();

      int progress3=mProgressBar3.getProgress();

      mProgressBar1.setProgress(progress1+info.getLife());

      mProgressBar2.setProgress(progress2+info.getAcctack());

      mProgressBar3.setProgress(progress3+info.getSpeed());

      mLifeTV.setText(mProgressBar1.getProgress()+"");

      mAttackTV.setText(mProgressBar2.getProgress()+"");

      mSpeedTV.setText(mProgressBar3.getProgress()+"");

    }

  }

6.最后配置清单文件

<activity>

    android:name="cn.itcast.select.MainActivity"

    android:lable="@string/app_name">

    <intent_filter>

        <action android:name="android.intent.action.MAIN"/>

        <category android:name="android.intent.category.LAUNCHER"/>

    </intent-filter>

    <activity android:name="cn.itcast.select.ShopActivity">

    </activity>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: