进入android App,尤其是刚安装的app,一般进入有广告或者安装向导,安装向导是由一个个的activity之间进行切换形成的,再加上业务逻辑控制安装向导的显示时机。
示例如下
LostAndFind.activity主逻辑进入activity,当第一次进入的时候这个activity没有起到显示的作用,会直接跳过,不是第一次进入的时候才会有显示
package com.ldw.safe.Activity; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import com.ldw.safe.R; /* * 手机防盗页面 */ public class LostAndFind extends Activity { private SharedPreferences mPref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //判断是否是第一次登陆,第一次登陆会进入设置向导 mPref = getSharedPreferences("config", MODE_PRIVATE); boolean configed = mPref.getBoolean("configed", false); if(configed){ //进入手机放到主页面 setContentView(R.layout.activity_lostfind); }else{ //跳转到设置向导页 startActivity(new Intent(LostAndFind.this, Setup1Activity.class)); finish(); } } /* * 重新进入设置向导 */ public void reEnter(View v){ startActivity(new Intent(LostAndFind.this, Setup1Activity.class)); finish(); } }activity_lostfind.xml主界面,根据是否是第一次安装来确定是否显示
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView style="@style/TitleStyle" android:text="手机防盜" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView style="@style/ContentStyle" android:text="安全号码" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:layout_centerVertical="true" android:textSize="20sp" android:textColor="@color/black" android:text="123123123123" /> </RelativeLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="5dp" android:background="@drawable/listview_divider" /> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <TextView style="@style/ContentStyle" android:text="防盗保护是否开启" /> <ImageView android:id="@+id/textView2" android:layout_width="20dp" android:layout_height="20dp" android:layout_alignParentRight="true" android:layout_marginRight="5dp" android:layout_centerVertical="true" android:src="@drawable/lock" /> </RelativeLayout> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="5dp" android:background="@drawable/listview_divider" /> <TextView style="@style/ContentStyle" android:layout_width="match_parent" android:layout_marginRight="5dp" android:onClick="reEnter" android:clickable="true" android:background="@drawable/shape_selector" android:text="重新进入设置向导" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center_horizontal" android:layout_marginTop="5dp" android:background="@drawable/listview_divider" /> <TextView android:background="#885500" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="功能简介" android:textSize="20sp" android:textColor="@color/black" android:layout_marginRight="5dp" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:padding="3dp" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="GPS跟踪#*Location*#" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="播放报警音乐#*alarm*#" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="远程删除数据#*wipedata*#" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="远程锁屏#*lookscreen*#" /> </LinearLayout>Setup1Activity.java安装向导1
package com.ldw.safe.Activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import com.ldw.safe.R; /* * 手机防盗第一个设置向导页面 */ public class Setup1Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup1); } //跳转到下一页 public void next(View v){ //页面跳转 startActivity(new Intent(Setup1Activity.this, Setup2Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画 } }activity_setup1.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView style="@style/TitleStyle" android:text="1.欢迎使用手机防盗" /> <TextView style="@style/ContentStyle" android:text="您的手机防盗卫士" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="SIM卡变更" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="GPS跟踪" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="远程销毁数据" /> <TextView style="@style/ContentStyle" android:drawableLeft="@android:drawable/star_big_on" android:layout_gravity="center" android:text="远程锁屏" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_online"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/setup1" /> <Button style="@style/NextStyle" /> </RelativeLayout> </LinearLayout>Setup2Activity.java安装向导2
package com.ldw.safe.Activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import com.ldw.safe.R; /* * 手机防盗第二个设置向导页面 */ public class Setup2Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup2); } //跳转到下一页 public void next(View v){ //页面跳转 startActivity(new Intent(Setup2Activity.this, Setup3Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画 } //跳转到上一页 public void previous(View v){ //页面跳转 startActivity(new Intent(Setup2Activity.this, Setup1Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画 } }activity_setup2.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ldw="http://schemas.android.com/apk/res/com.ldw.safe" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView style="@style/TitleStyle" android:text="2.手机卡绑定" /> <TextView style="@style/ContentStyle" android:text="通过绑定SIM卡" /> <TextView style="@style/ContentStyle" android:text="下次重启手机如果SIM发生变化" /> <TextView style="@style/ContentStyle" android:text="就会发送报警短信" /> <com.ldw.safe.view.SettingItemView android:id="@+id/siv_sim" android:layout_width="match_parent" android:layout_height="wrap_content" ldw:title="点击绑定SIM卡" ldw:desc_on="SIM卡已经绑定" ldw:desc_off="SIM卡没有绑定" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_online"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/bind" /> <Button style="@style/NextStyle" /> <Button style="@style/PreviousStyle" /> </RelativeLayout> </LinearLayout>Setup3Activity.java安装向导3
package com.ldw.safe.Activity; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import com.ldw.safe.R; /* * 手机防盗第三个设置向导页面 */ public class Setup3Activity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup3); } //跳转到下一页 public void next(View v){ //页面跳转 startActivity(new Intent(Setup3Activity.this, Setup4Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画 } //跳转到上一页 public void previous(View v){ //页面跳转 startActivity(new Intent(Setup3Activity.this, Setup2Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画 } }activity_setup3.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ldw="http://schemas.android.com/apk/res/com.ldw.safe" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView style="@style/TitleStyle" android:text="3.设置安全号码" /> <TextView style="@style/ContentStyle" android:text="SIM卡变更后" /> <TextView style="@style/ContentStyle" android:text="报警短信会发送给安全号码" /> <EditText android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="请输入安全号码" /> <Button android:layout_width="wrap_content" android:layout_height="wrap_content" android:background="@drawable/button" android:text="请选择联系人" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_online"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/bind" /> <Button style="@style/NextStyle" /> <Button style="@style/PreviousStyle" /> </RelativeLayout> </LinearLayout>Setup4Activity.java安装向导4
package com.ldw.safe.Activity; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.os.Bundle; import android.view.View; import com.ldw.safe.R; /* * 手机防盗第四个设置向导页面 */ public class Setup4Activity extends Activity { private SharedPreferences mPref; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setup4); mPref = getSharedPreferences("config", MODE_PRIVATE); } //跳转到下一页 public void next(View v){ //页面跳转 startActivity(new Intent(Setup4Activity.this, LostAndFind.class)); //销毁当前页面 finish(); //更新mPref表示已经展示过设置向导,下次进来不展示更新向导 mPref.edit().putBoolean("configed", true).commit(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_in, R.anim.tran_out);//进入动画和推出动画 } //跳转到上一页 public void previous(View v){ //页面跳转 startActivity(new Intent(Setup4Activity.this, Setup3Activity.class)); //销毁当前页面 finish(); //两个界面的切换动画 overridePendingTransition(R.anim.tran_previous_in, R.anim.tran_previous_out);//进入动画和推出动画 } }activity_setup4.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:ldw="http://schemas.android.com/apk/res/com.ldw.safe" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <TextView style="@style/TitleStyle" android:text="4.恭喜您设置完成" /> <CheckBox android:layout_width="match_parent" android:layout_height="wrap_content" android:text="防盗保护没有开启" /> <LinearLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:orientation="horizontal" > <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_invisible"/> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@android:drawable/presence_online"/> </LinearLayout> <RelativeLayout android:layout_width="match_parent" android:layout_height="0dp" android:layout_weight="1" > <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:layout_centerVertical="true" android:src="@drawable/phone" /> <Button style="@style/NextStyle" android:text="设置完成" /> <Button style="@style/PreviousStyle" /> </RelativeLayout> </LinearLayout>针对按钮设置的点击形状的改变,res/drawable/button.xml按钮在不同的状态下有不同的特效
<?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/button_pressed" android:state_pressed="true"/> <!-- pressed --> <item android:drawable="@drawable/button_pressed" android:state_focused="true"/> <!-- focused --> <item android:drawable="@drawable/button_normal"/> <!-- default --> </selector>针对每个activity切换,可以添加进入和退出的特效
res/anim目录下
tran_in.xml切换到下一页,进入页面的展示
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="100%p" android:toXDelta="0" > </translate>tran_out.xml切换到下一页,当前页面退出的效果
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0" android:toXDelta="-100%p" > </translate>previout_in.xml切换到上一页,进入页面的展示
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="-100%p" android:toXDelta="0" > </translate>
previout_out切换到上一页,当前页面的退出效果
<?xml version="1.0" encoding="utf-8"?> <translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="500" android:fromXDelta="0" android:toXDelta="100%p" > </translate>
