Android项目新手功能引导页面代码实现

一.界面实现:

借鉴了别人的实例,然后记录下引导界面的实现,总体来说实现不算困难,前提是要有个美工帮你做这些引导图片(找了张图片凑合用吧):


主界面:

public class MainActivity extends PromptActivity {
    //activity的生命周期
    public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_main);

         setGuideResId(R.drawable.prompt2);// 添加引导页
    }
}

引导界面:

public class PromptActivity extends Activity {

     private int guideResourceId = 0;// 引导页图片资源id
     private PromptSharedPreferences psp;
     @Override
     protected void onStart() {
          super.onStart();
          addGuideImage();// 添加引导页
     }

     //显示引导图片
     public void addGuideImage() {
          psp = new PromptSharedPreferences();
          View view = getWindow().getDecorView().findViewById(R.id.my_content_view);// 查找通过setContentView上的根布局
          if (view == null)
               return;
          if (psp.takeSharedPreferences(this)) {
               // 有过功能引导,就跳出
               return;
          }
          ViewParent viewParent = view.getParent();
          if (viewParent instanceof FrameLayout) {
                final FrameLayout frameLayout = (FrameLayout) viewParent;
                if (guideResourceId != 0) {
                     // 设置了引导图片
                     final ImageView guideImage = new ImageView(this);
                     FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
                     ViewGroup.LayoutParams.FILL_PARENT,
                     ViewGroup.LayoutParams.FILL_PARENT);
                     guideImage.setLayoutParams(params);
                     guideImage.setScaleType(ScaleType.FIT_XY);
                     guideImage.setImageResource(guideResourceId);
                     guideImage.setOnClickListener(new View.OnClickListener() {
                           @Override
                           public void onClick(View v) {
                                //删除引导图片
                                frameLayout.removeView(guideImage);
                                //保存记录
                                psp.saveSharedPreferences(PromptActivity.this, "启动了");
                           }
                     });

                     frameLayout.addView(guideImage);// 添加引导图片

               }
         }
    }
    //获得图片id
    protected void setGuideResId(int resId) {
         this.guideResourceId = resId;
    }

}

布局:

<LinearLayout
      android:orientation="vertical"
      android:layout_width="fill_parent"
      android:layout_height="fill_parent"
      android:id="@id/my_content_view" >
      <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="58dp"
            android:layout_marginLeft="150dp"
            android:text="Helloworld!" />
     <TextView
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="58dp"
            android:layout_marginLeft="275dp"
            android:text="Helloworld!" />
</LinearLayout>

本地文件:

public class PromptSharedPreferences {
     private SharedPreferences sp;

     // 保存
     public void saveSharedPreferences(Context context, String save) {
          sp = context.getSharedPreferences("prompt", context.MODE_PRIVATE);
          Editor editor = sp.edit();
          editor.putString("state", save);
          editor.commit();// 保存新数据
     }

     // 取出
     public boolean takeSharedPreferences(Context context) {
          String str = "";
          sp = context.getSharedPreferences("prompt", context.MODE_PRIVATE);
          str = sp.getString("state", "");
          if (str.equals("")) {
                return false;
          }else{
                return true;
          }
     }
}

添加values/ids.xml:

<?xml version="1.0" encoding="utf-8"?>
     <resources>
          <item type="id" name="my_content_view"></item>
     </resources>
</xml>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值