进入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>