【0124】【项目实战】-【组件化封装思想实战Android App】-【7】 首页MineFragment开发与测试

1.功能演示

 

2. 播放设置开发

2.1 播放设置流程

2.2 setting的布局及初始化

 

【布局源码】

  1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2               android:layout_width="match_parent"
  3               android:layout_height="match_parent"
  4               android:background="@color/color_e3e3e3"
  5               android:orientation="vertical"
  6 >
  7 
  8     <RelativeLayout
  9         android:layout_width="match_parent"
 10         android:layout_height="48dp"
 11     >
 12         <ImageView
 13             android:id="@+id/back_view"
 14             android:layout_width="25dp"
 15             android:layout_height="25dp"
 16             android:layout_centerVertical="true"
 17             android:layout_marginLeft="10dp"
 18             android:background="@drawable/comment_back_normal"
 19         />
 20         <TextView
 21             android:layout_width="wrap_content"
 22             android:layout_height="wrap_content"
 23             android:layout_centerInParent="true"
 24             android:text="@string/video_play_setting"
 25             android:textColor="@color/color_333333"
 26             android:textSize="22sp"
 27         />
 28     </RelativeLayout>
 29 
 30     <TextView
 31         android:layout_width="wrap_content"
 32         android:layout_height="wrap_content"
 33         android:layout_marginBottom="10dp"
 34         android:layout_marginLeft="7dp"
 35         android:layout_marginTop="10dp"
 36         android:text="@string/video_setting"
 37         android:textColor="@color/color_666666"
 38         android:textSize="16sp"
 39     />
 40     <RelativeLayout
 41         android:id="@+id/alway_layout"
 42         android:layout_width="match_parent"
 43         android:layout_height="wrap_content"
 44     >
 45         <TextView
 46             android:id="@+id/alway_view"
 47             android:layout_width="match_parent"
 48             android:layout_height="wrap_content"
 49             android:background="@color/white"
 50             android:paddingBottom="15dp"
 51             android:paddingLeft="7dp"
 52             android:paddingTop="15dp"
 53             android:text="@string/auto_player_always"
 54             android:textColor="@color/color_333333"
 55             android:textSize="18sp"
 56         />
 57 
 58         <CheckBox
 59             android:id="@+id/alway_check_box"
 60             android:layout_width="wrap_content"
 61             android:layout_height="wrap_content"
 62             android:layout_alignParentRight="true"
 63             android:layout_centerVertical="true"
 64             android:layout_marginRight="10dp"
 65             android:button="@null"
 66             android:checked="false"
 67             android:clickable="false"
 68         />
 69     </RelativeLayout>
 70     <View
 71         android:layout_width="match_parent"
 72         android:layout_height="0.5dp"
 73         android:background="@color/color_cccccc"
 74     />
 75     <RelativeLayout
 76         android:id="@+id/wifi_layout"
 77         android:layout_width="match_parent"
 78         android:layout_height="wrap_content"
 79     >
 80         <TextView
 81             android:id="@+id/wifi_view"
 82             android:layout_width="match_parent"
 83             android:layout_height="wrap_content"
 84             android:background="@color/white"
 85             android:paddingBottom="15dp"
 86             android:paddingLeft="7dp"
 87             android:paddingTop="15dp"
 88             android:text="@string/auto_player_only_wifi"
 89             android:textColor="@color/color_333333"
 90             android:textSize="18sp"
 91         />
 92 
 93         <CheckBox
 94             android:id="@+id/wifi_check_box"
 95             android:layout_width="wrap_content"
 96             android:layout_height="wrap_content"
 97             android:layout_alignParentRight="true"
 98             android:layout_centerVertical="true"
 99             android:layout_marginRight="10dp"
100             android:button="@null"
101             android:checked="false"
102             android:clickable="false"
103         />
104     </RelativeLayout>
105     <View
106         android:layout_width="match_parent"
107         android:layout_height="0.5dp"
108         android:background="@color/color_cccccc"
109     />
110     <RelativeLayout
111         android:id="@+id/close_layout"
112         android:layout_width="match_parent"
113         android:layout_height="wrap_content"
114     >
115         <TextView
116             android:id="@+id/close_view"
117             android:layout_width="match_parent"
118             android:layout_height="wrap_content"
119             android:background="@color/white"
120             android:paddingBottom="15dp"
121             android:paddingLeft="7dp"
122             android:paddingTop="15dp"
123             android:text="@string/auto_player_never"
124             android:textColor="@color/color_333333"
125             android:textSize="18sp"
126         />
127 
128         <CheckBox
129             android:id="@+id/close_check_box"
130             android:layout_width="wrap_content"
131             android:layout_height="wrap_content"
132             android:layout_alignParentRight="true"
133             android:layout_centerVertical="true"
134             android:layout_marginRight="10dp"
135             android:button="@null"
136             android:checked="false"
137             android:clickable="false"
138         />
139     </RelativeLayout>
140 </LinearLayout>

 

2.3 SP的基本用法

2.4 spManager的封装

3. 视频设置开发

 

【对比封装】

【通知设置】

【源码】

  1 package com.youdu.activity;
  2 
  3 import android.os.Bundle;
  4 import android.support.v7.app.AppCompatActivity;
  5 import android.view.View;
  6 import android.view.View.OnClickListener;
  7 import android.widget.CheckBox;
  8 import android.widget.ImageView;
  9 import android.widget.RelativeLayout;
 10 
 11 import com.youdu.R;
 12 import com.youdu.constant.SDKConstant.AutoPlaySetting;
 13 import com.youdu.core.AdParameters;
 14 import com.youdu.db.SPManager;
 15 
 16 public class SettingActivity extends AppCompatActivity implements OnClickListener {
 17 
 18     /**
 19      * UI
 20      */
 21     private RelativeLayout mWifiLayout;
 22     private RelativeLayout mAlwayLayout;
 23     private RelativeLayout mNeverLayout;
 24     private CheckBox mWifiBox, mAlwayBox, mNeverBox;
 25     private ImageView mBackView;
 26 
 27     @Override
 28     protected void onCreate(Bundle savedInstanceState) {
 29         super.onCreate(savedInstanceState);
 30         setContentView(R.layout.activity_setting_layout);
 31 
 32         initView();
 33     }
 34 
 35     private void initView() {
 36         mBackView = (ImageView) findViewById(R.id.back_view);
 37         mWifiLayout = (RelativeLayout) findViewById(R.id.wifi_layout);
 38         mWifiBox = (CheckBox) findViewById(R.id.wifi_check_box);
 39         mAlwayLayout = (RelativeLayout) findViewById(R.id.alway_layout);
 40         mAlwayBox = (CheckBox) findViewById(R.id.alway_check_box);
 41         mNeverLayout = (RelativeLayout) findViewById(R.id.close_layout);
 42         mNeverBox = (CheckBox) findViewById(R.id.close_check_box);
 43 
 44         mBackView.setOnClickListener(this);
 45         mWifiLayout.setOnClickListener(this);
 46         mAlwayLayout.setOnClickListener(this);
 47         mNeverLayout.setOnClickListener(this);
 48 
 49         int currentSetting = SPManager.getInstance().getInt(SPManager.VIDEO_PLAY_SETTING, 1);
 50         switch (currentSetting) {
 51             case 0:
 52                 mAlwayBox.setBackgroundResource(R.drawable.setting_selected);
 53                 mWifiBox.setBackgroundResource(0);
 54                 mNeverBox.setBackgroundResource(0);
 55                 break;
 56             case 1:
 57                 mAlwayBox.setBackgroundResource(0);
 58                 mWifiBox.setBackgroundResource(R.drawable.setting_selected);
 59                 mNeverBox.setBackgroundResource(0);
 60                 break;
 61             case 2:
 62                 mAlwayBox.setBackgroundResource(0);
 63                 mWifiBox.setBackgroundResource(0);
 64                 mNeverBox.setBackgroundResource(R.drawable.setting_selected);
 65                 break;
 66         }
 67     }
 68 
 69     @Override
 70     public void onClick(View v) {
 71 
 72         switch (v.getId()) {
 73             case R.id.alway_layout:
 74                 SPManager.getInstance().putInt(SPManager.VIDEO_PLAY_SETTING, 0);
 75                 AdParameters.setCurrentSetting(AutoPlaySetting.AUTO_PLAY_3G_4G_WIFI);
 76                 mAlwayBox.setBackgroundResource(R.drawable.setting_selected);
 77                 mWifiBox.setBackgroundResource(0);
 78                 mNeverBox.setBackgroundResource(0);
 79                 break;
 80             case R.id.close_layout:
 81                 SPManager.getInstance().putInt(SPManager.VIDEO_PLAY_SETTING, 2);
 82                 AdParameters.setCurrentSetting(AutoPlaySetting.AUTO_PLAY_NEVER);
 83                 mAlwayBox.setBackgroundResource(0);
 84                 mWifiBox.setBackgroundResource(0);
 85                 mNeverBox.setBackgroundResource(R.drawable.setting_selected);
 86                 break;
 87             case R.id.wifi_layout:
 88                 SPManager.getInstance().putInt(SPManager.VIDEO_PLAY_SETTING, 1);
 89                 AdParameters.setCurrentSetting(AutoPlaySetting.AUTO_PLAY_ONLY_WIFI);
 90                 mAlwayBox.setBackgroundResource(0);
 91                 mWifiBox.setBackgroundResource(R.drawable.setting_selected);
 92                 mNeverBox.setBackgroundResource(0);
 93                 break;
 94             case R.id.back_view:
 95                 finish();
 96                 break;
 97 
 98         }
 99     }
100 }

【点击跳转】

 

4.版本更新模块

4.1 下载更新组件的调用

【点击更新选项】

【效果】

 

4.2版本更新的串讲

【说明】本章只是调用已经封转好的下载更新的组件;具体的下载更新组件的内容查看该作者的更新组件的课程;

5.用户信息管理 

5.1 登录及用户信息开发流程

5.2 用户信息管理开发-发送登录请求、信息的获取和保存

【布局】

 

【布局源码】

 1 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 2                 android:layout_width="match_parent"
 3                 android:layout_height="match_parent"
 4                 android:background="@color/white">
 5 
 6     <ScrollView
 7         android:id="@+id/login_scroll"
 8         android:layout_width="match_parent"
 9         android:layout_height="wrap_content">
10 
11         <RelativeLayout
12             android:layout_width="match_parent"
13             android:layout_height="wrap_content">
14 
15             <ImageView
16                 android:id="@+id/iv_login_logo"
17                 android:layout_width="80dp"
18                 android:layout_height="80dp"
19                 android:layout_centerHorizontal="true"
20                 android:layout_marginTop="60dp"
21                 android:background="@drawable/icon_login"
22                 android:paddingLeft="43dp"
23                 android:paddingRight="47dp"
24                 android:paddingTop="70dp"/>
25 
26             <RelativeLayout
27                 android:id="@+id/rl_login_input"
28                 android:layout_width="match_parent"
29                 android:layout_height="wrap_content"
30                 android:layout_below="@+id/iv_login_logo"
31                 android:paddingLeft="25dp"
32                 android:paddingRight="25dp">
33 
34                 <com.youdu.view.associatemail.MailBoxAssociateView
35                     android:id="@+id/associate_email_input"
36                     android:layout_width="match_parent"
37                     android:layout_height="wrap_content"
38                     android:layout_marginTop="57dp"
39                     android:hint="@string/account"
40                     android:paddingBottom="12dp"
41                     android:paddingLeft="5dp"
42                     android:popupBackground="@drawable/bg_recommend_mail_list"
43                     android:singleLine="true"
44                     android:textColor="@color/color_333333"
45                     android:textColorHint="@color/color_bfbfbf"
46                     android:textSize="16sp"/>
47 
48                 <EditText
49                     android:id="@+id/login_input_password"
50                     android:layout_width="match_parent"
51                     android:layout_height="wrap_content"
52                     android:layout_below="@+id/associate_email_input"
53                     android:layout_marginTop="22dp"
54                     android:hint="@string/password"
55                     android:inputType="textPassword"
56                     android:paddingBottom="12dp"
57                     android:paddingLeft="5dp"
58                     android:singleLine="true"
59                     android:textColor="@color/color_333333"
60                     android:textColorHint="@color/color_bfbfbf"
61                     android:textSize="16sp"/>
62             </RelativeLayout>
63 
64             <TextView
65                 android:id="@+id/login_button"
66                 android:layout_width="match_parent"
67                 android:layout_height="35dp"
68                 android:layout_below="@id/rl_login_input"
69                 android:layout_marginLeft="25dp"
70                 android:layout_marginRight="25dp"
71                 android:layout_marginTop="50dp"
72                 android:background="@color/color_fed952"
73                 android:gravity="center"
74                 android:text="@string/login"/>
75         </RelativeLayout>
76     </ScrollView>
77 </RelativeLayout>

【登录的框架】

【网络请求】

【用户信息管理类】

 1 package com.youdu.manager;
 2 
 3 
 4 import com.youdu.module.user.User;
 5 
 6 /**
 7  * @description 单例管理登陆用户信息
 8  */
 9 public class UserManager {
10 
11     private static UserManager userManager = null;
12     private User user = null;
13 
14     public static UserManager getInstance() {
15 
16         if (userManager == null) {
17 
18             synchronized (UserManager.class) {
19 
20                 if (userManager == null) {
21 
22                     userManager = new UserManager();
23                 }
24                 return userManager;
25             }
26         } else {
27 
28             return userManager;
29         }
30     }
31 
32     /**
33      * init the user
34      * 
35      * @param user
36      */
37     public void setUser(User user) {
38 
39         this.user = user;
40     }
41 
42     public boolean hasLogined() {
43 
44         return user == null ? false : true;
45     }
46 
47     /**
48      * has user info
49      * 
50      * @return
51      */
52     public User getUser() {
53 
54         return this.user;
55     }
56 
57     /**
58      * remove the user info
59      */
60     public void removeUser() {
61 
62         this.user = null;
63     }
64 }

  【完善-保存信息】

5.3 LocalBroadCastReceiver(局部广播接收者的)的使用

【发送广播】

 

【接收广播】

【注册广播接收器】

 

【销毁广播接收器】

 

 6. 二维码的显示

 【源码】q0pwzp\Client_Code\app\src\main\java\com\youdu\view\MyQrCodeDialog.java

 1 package com.youdu.view;
 2 
 3 import android.app.Dialog;
 4 import android.content.Context;
 5 import android.os.Bundle;
 6 import android.view.View;
 7 import android.widget.ImageView;
 8 import android.widget.TextView;
 9 
10 import com.youdu.R;
11 import com.youdu.manager.UserManager;
12 import com.youdu.util.Util;
13 import com.youdu.adutil.Utils;
14 
15 /**
16  * 二维码的生成
17  */
18 public class MyQrCodeDialog extends Dialog {
19 
20     private Context mContext;
21 
22     /**
23      * UI
24      */
25     private ImageView mQrCodeView;
26     private TextView mTickView;
27     private TextView mCloseView;
28 
29     public MyQrCodeDialog(Context context) {
30         super(context, 0);
31         mContext = context;
32     }
33 
34     @Override
35     protected void onCreate(Bundle savedInstanceState) {
36         super.onCreate(savedInstanceState);
37         setContentView(R.layout.dialog_mycode_layout);
38         initView();
39     }
40 
41     private void initView() {
42 
43         mQrCodeView = (ImageView) findViewById(R.id.qrcode_view);
44         mTickView = (TextView) findViewById(R.id.tick_view);
45         mCloseView = (TextView) findViewById(R.id.close_view);
46         mCloseView.setOnClickListener(new View.OnClickListener() {
47             @Override
48             public void onClick(View v) {
49                 dismiss();
50             }
51         });
52 
53         String name = UserManager.getInstance().getUser().data.name;
54         //【核心】通过zxing的二维码生成功能生成二维码
55         mQrCodeView.setImageBitmap(Util.createQRCode(
56             Utils.dip2px(mContext, 200),
57             Utils.dip2px(mContext, 200),
58             name));
59         mTickView.setText(name + mContext.getString(R.string.personal_info));
60     }
61 }

 

 

posted @ 2018-04-17 19:29  OzTaking  阅读(636)  评论(0)    收藏  举报