내 음악 :
1, 프로젝트 생성 :
프로젝트 프레임 워크 :
전면 및 후면 페이지 개발 :
1, 인덱스 페이지 :
핵심 코드 :
private void init() {
mtimer=new Timer();
mtimer.schedule(new TimerTask() {
@Override
public void run() {
Log.e("索引页面", "----");//打印日志
toMain();
}
},3000);
}
private void toMain() {
Intent intent=new Intent(this,MainActivity.class);//调换页面
startActivity(intent);//将他设置成活动页面
finish();//结束
}
2 홈 :
3 로그인 페이지 :
初始化头页面:
private void initView() {
initNavBar(false,"登录",false);
}
4, 프록시 클래스 : 전면 : 페이지 헤드 - 공공 인용] : 별도의 페이지에서 다른 페이지 참조 그래서
核心代码:
private ImageView iv_back,iv_me;
private TextView tv_title;
protected void initNavBar(boolean isShowBack,String title,boolean isShowUser){
iv_back=Rid(R.id.iv_back);//退回图标
iv_me=Rid(R.id.iv_me);//用户添加图标
tv_title=Rid(R.id.tv_title);//页面标题
//逻辑显示
iv_back.setVisibility(isShowBack?View.VISIBLE:View.GONE);
iv_me.setVisibility(isShowBack?View.VISIBLE:View.GONE);
tv_title.setText(title);
//后退操作
iv_back.setOnClickListener(new View.OnClickListener(){//点击事件
@Override
public void onClick(View v) {
onBackPressed();
}
});
}
protected <T extends View> T Rid(@IdRes int id){
return findViewById(id);//获取页面中对应的id
}
사용자 지정 컨트롤은 [전면 : 사용자 정의 페이지 컨트롤 - 대중 참조]
공용 클래스 InputView는 FrameLayout이 {확장
개인 INT의 inputIcon을;
개인 문자열 inputHint;
개인 부울 isPassword;
public InputView(@NonNull Context context) {
super(context);
init(context,null);
}
public InputView(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
init(context,attrs);
}
public InputView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
init(context,attrs);
}
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)//API21以上使用
public InputView(@NonNull Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
super(context, attrs, defStyleAttr, defStyleRes);
init(context,attrs);
}
private void init(Context context,AttributeSet attributeSet){
if(attributeSet==null){return;}
//获取自定义属性
TypedArray typedArray = context.obtainStyledAttributes(attributeSet, R.styleable.inputView);
inputIcon = typedArray.getIndex(R.styleable.inputView_input_icon);
inputHint = typedArray.getString(R.styleable.inputView_input_hint);
isPassword = typedArray.getBoolean(R.styleable.inputView_is_password,false);
typedArray.recycle();//手动关闭
}
}
구성 지침
이러한 통합 관리 구성 파일 :
color.xml : 사용자 정의 색상 참조
string.xml : 사용자 정의 페이지 텍스트
밉맵 : 전체 응용 프로그램 이미지
attrs.xml이 사용자 정의
dimen.xml : 높은 폭 탭의 페이지 사이에 제공
구성 파일
AndroidManifest.xml을 : 애플리케이션 매니페스트 파일
<XML 버전 = "1.0" "UTF-8"? 부호화 =>
<매니페스트에 xmlns : 안드로이드 = "http://schemas.android.com/apk/res/android"의 xmlns : 안드로이드 안드로이드는 네임 스페이스를 정의한다.
패키지 = "com.example.livemingmusic"> 안드로이드 애플 리케이션을위한 전체 자바 언어 스타일 패키지 이름.
<application
android:name=".MyApplication" Application 为应用程序实现的子类的完全限定名称
android:allowBackup="true" 是否允许应用程序参与备份和还原基础结构。
android:icon="@mipmap/themeimg" 整个应用程序的图标,以及每个应用程序组件的默认图标。
android:label="@string/app_name" 整个应用程序的用户可读标签,以及每个应用程序组件的默认标签。
android:roundIcon="@mipmap/themeimg"
android:supportsRtl="true" 声明您的应用程序是否愿意支持从右到左(RTL)布局。
android:theme="@style/AppTheme"> 对样式资源的引用,该样式资源为应用程序中的所有活动定义了默认主题。
<activity android:name=".activitys.LoginActivity"/>
<activity android:name=".activitys.MainActivity" />
<activity android:name=".activitys.WelcomeActivity">
<intent-filter><意图过滤器>
<action android:name="android.intent.action.MAIN" />动作的名称。在Intent类中将一些标准动作定义 为 常量。
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>