木雨音乐 项目开发(三)主界面MainActivity

MainActivity主界面

(项目代码已经基本完成,粘贴代码为完整代码)

木雨音乐 APP已在百度手机助手上架,有兴趣的朋友可以下载测试,下载地址:http://shouji.baidu.com/software/9785031.html
木雨音乐源码下载地址:http://download.csdn.net/detail/haoxue641/9610782
希望大家多提宝贵意见

实现功能与主要方法:

1、使用PagerSlidingTabStrip实现本地音乐与网络推荐之间的切换
2、返回键退出提示
3、菜单键
界面截图

MainActivity.java(主界面类)
CustomDialog.java(自定义对话框类)
activity_main.xml(主界面布局文件)
main_menu.xml(菜单项布局文件)
alert_dialog.xml(自定义对话框布局)
styles.xml(主题风格属性文件)
MuyuPlayerAPP.java(全局对象)

MainActivity.java代码如下
package com.haoxue.zixueplayer;

import android.app.NotificationManager;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.graphics.drawable.LayerDrawable;
import android.graphics.drawable.TransitionDrawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.TypedValue;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;

import com.astuetz.PagerSlidingTabStrip;
import com.haoxue.zixueplayer.utils.CustomDialog;

/**
 * Activity
 * 由于本人艺术感太差,UI界面比较丑,请自行设计
 */
public class MainActivity extends BaseActivity implements DownloadDialogFragment.DownloadSuccessListener, MyMusicListFragment.SuccessListener {


    private PagerSlidingTabStrip tabs;
    private ViewPager pager;
    private MyPagerAdapter adapter;

    private Drawable oldBackground = null;
    private int currentColor = 0x98000000;

    private MyMusicListFragment myMusicListFragment;
    private NetMusicListFragment netMusicListFragment;

    public MuyuPlayerApp app;//取出全局对象 方便调用

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        app = (MuyuPlayerApp) getApplication();
        setContentView(R.layout.activity_main);

        tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
        pager = (ViewPager) findViewById(R.id.pager);
        adapter = new MyPagerAdapter(getSupportFragmentManager());

        pager.setAdapter(adapter);

        final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4, getResources()
                .getDisplayMetrics());
        pager.setPageMargin(pageMargin);

        tabs.setViewPager(pager);
        initService();
        changeColor(currentColor);
    }

    @Override
    public void publish(int progress) {
        //更新进度条
    }

    @Override
    public void change(int position) {
        //切换状态播放位置
        if (pager.getCurrentItem() == 0) {
            myMusicListFragment.loadData();
            myMusicListFragment.changeUIStatusOnPlay(position);
        } else if (pager.getCurrentItem() == 1) {
        }

    }

    private void changeColor(int newColor) {

        tabs.setIndicatorColor(newColor);

        // change ActionBar color just if an ActionBar is available
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

            Drawable colorDrawable = new ColorDrawable(newColor);
            Drawable bottomDrawable = getResources().getDrawable(R.drawable.actionbar_bottom);
            LayerDrawable ld = new LayerDrawable(new Drawable[]{colorDrawable, bottomDrawable});

            if (oldBackground == null) {

                getActionBar().setBackgroundDrawable(ld);

            } else {

                TransitionDrawable td = new TransitionDrawable(new Drawable[]{oldBackground, ld});

                getActionBar().setBackgroundDrawable(td);

                td.startTransition(200);

            }

            oldBackground = ld;

            getActionBar().setDisplayShowTitleEnabled(false);
            getActionBar().setDisplayShowTitleEnabled(true);

        }


    }


    @Override
    public void downloadSuccessListener(String isDownloadSuccess) {
        System.out.println("MainActivity.downloadSuccessListener = " + isDownloadSuccess);
        if (isDownloadSuccess.length() > 0) {
            //问题:下载完成后,确实通知媒体库更新了,但是马上初始化数据,可能媒体库还没有更新
            //临时解决:ActionBar,添加一个刷新按钮

            //更新本地音乐列表
            myMusicListFragment.loadData();//初始化数据
            myMusicListFragment.newInstance();//重新实例化一下本地音乐Fragment,加载新的数据
        }
    }

    @Override
    public void successListener(String isSuccess) {

        //问题:删除完成后,确实通知媒体库更新了,但是马上初始化数据,可能媒体库还没有更新
        //临时解决:ActionBar,添加一个刷新按钮
        myMusicListFragment.loadData();//初始化数据
        MyMusicListFragment.newInstance();//重新实例化一下本地音乐Fragment,加载新的数据

    }

    public class MyPagerAdapter extends FragmentPagerAdapter {

        private final String[] TITLES = {getString(R.string.my_music), getString(R.string.net_music)};

        public MyPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return TITLES[position];
        }

        @Override
        public int getCount() {
            return TITLES.length;
        }

        @Override
        public Fragment getItem(int position) {
            if (position == 0) {
                if (myMusicListFragment == null) {
                    myMusicListFragment = MyMusicListFragment.newInstance();
                }
                return myMusicListFragment;
            } else if (position == 1) {
                if (netMusicListFragment == null) {
                    netMusicListFragment = NetMusicListFragment.newInstance();
                }
                return netMusicListFragment;
            }
            return null;
        }

    }

    //菜单项
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main_menu, menu);
        return true;
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        Intent intent;
        switch (item.getItemId()) {
            case R.id.newMyMusic:
                myMusicListFragment.loadData();//初始化数据
                MyMusicListFragment.newInstance();//重新实例化一下本地音乐Fragment,加载新的数据
                break;
            case R.id.ilike:
                intent = new Intent(this, MyLikeMusicListActivity.class);
                startActivity(intent);
                break;
            case R.id.near_play:
                intent = new Intent(this, PlayRecordListActivity.class);
                startActivity(intent);
                break;
            case R.id.about:
                intent = new Intent(this, AboutActivity.class);
                startActivity(intent);
                break;
            case R.id.exit:
                stopService(new Intent(this, PlayService.class));
                exit();
                break;
        }
        return true;
    }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        //保存当前播放的一些状态值
        MuyuPlayerApp app = (MuyuPlayerApp) getApplication();
        SharedPreferences.Editor editor = app.sp.edit();
        editor.putInt("currentPosition", playService.getCurrentPosition());
        editor.putInt("play_mode", playService.getPlay_mode());
        editor.commit();
    }


    /**
     * 按返回键弹出对话框确定退出
     */
//    @Override
//    public boolean onKeyDown(int keyCode, KeyEvent event)
//    {
//        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN )
//        {
//            // 创建退出对话框
//            AlertDialog isExit = new AlertDialog.Builder(this).create();
//            // 设置对话框标题
//            isExit.setTitle("系统提示");
//            // 设置对话框消息
//            isExit.setMessage("确定要退出吗");
//            // 添加选择按钮并注册监听
//            isExit.setButton("取消", listener);
//            isExit.setButton2("确定", listener);
//            // 显示对话框
//            isExit.show();
//
//        }
//
//        return false;
//
//    }
//    /**监听对话框里面的button点击事件*/
//    DialogInterface.OnClickListener listener = new DialogInterface.OnClickListener()
//    {
//        public void onClick(DialogInterface dialog, int which)
//        {
//            switch (which)
//            {
//                case AlertDialog.BUTTON_POSITIVE:// "确认"按钮退出程序
//
//                    break;
//                case AlertDialog.BUTTON_NEGATIVE:// "取消"第二个按钮取消对话框
//                    exit();
//                    break;
//                default:
//                    break;
//            }
//        }
//    };

    /**
     * 按返回键弹出对话框确定退出
     */
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            new CustomDialog.Builder(MainActivity.this)
                    .setTitle(R.string.info)
                    .setMessage(R.string.dialog_messenge)
                    .setPositiveButton(R.string.confrim,
                            new DialogInterface.OnClickListener() {

                                @Override
                                public void onClick(DialogInterface dialog, int which) {

                                    exit();

                                }
                            }).setNeutralButton(R.string.cancel, null).show();
            return false;
        }
        return false;
    }

    /**
     * Notification管理
     */
    public NotificationManager mNotificationManager;

    /**
     * 初始化要用到的系统服务
     */
    private void initService() {
        mNotificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
    }
}
CustomDialog.java代码如下
package com.haoxue.zixueplayer.utils;


import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.haoxue.zixueplayer.R;


/**
 * 自定义对话框类
 *
 * @author wwj
 *
 */
public class CustomDialog extends Dialog {

   public CustomDialog(Context context) {
      super(context);
   }

   public CustomDialog(Context context, int theme) {
      super(context, theme);
   }

   public static class Builder {

      private Context context;
      private int mIcon = -1; // 提示图标
      private CharSequence mTitle; // 提示标题
      private CharSequence mMessage; // 提示内容
      private CharSequence mPositiveButtonText; // 确定按钮文本
      private CharSequence mNegativeButtonText; // 取消按钮文本
      private CharSequence mNeutralButtonText; // 中间按钮文本
      private boolean mCancelable = true; // 是否启用取消键

      private int mViewSpacingLeft;
      private int mViewSpacingTop;
      private int mViewSpacingRight;
      private int mViewSpacingBottom;
      private boolean mViewSpacingSpecified = false;

      // 提示内容View
      private View mView;

      // 各种触发事件
      private OnClickListener mPositiveButtonClickListener,
            mNegativeButtonClickListener, mNeutralButtonClickListener;
      private OnCancelListener mCancelListener; // 取消键事件
      private OnKeyListener mKeyListener; // 按键处理

      public Builder(Context context) {
         this.context = context;
      }

      public Builder setMessage(CharSequence message) {
         this.mMessage = message;
         return this;
      }

      public Builder setMessage(int message) {
         this.mMessage = context.getText(message);
         return this;
      }

      public Builder setTitle(int title) {
         this.mTitle = context.getText(title);
         return this;
      }

      public Builder setTitle(CharSequence title) {
         this.mTitle = title;
         return this;
      }

      public Builder setIcon(int icon) {
         this.mIcon = icon;
         return this;
      }

      public Builder setView(View view) {
         this.mView = view;
         mViewSpacingSpecified = false;
         return this;
      }

      public Builder setView(View view, int left, int top, int right,
                        int bottom) {
         this.mView = view;
         this.mViewSpacingLeft = left;
         this.mViewSpacingTop = top;
         this.mViewSpacingRight = right;
         this.mViewSpacingBottom = bottom;
         mViewSpacingSpecified = true;
         return this;
      }

      public Builder setPositiveButton(int textId, final OnClickListener listener) {
         this.mPositiveButtonText = context.getText(textId);
         this.mPositiveButtonClickListener = listener;
         return this;
      }

      public Builder setPositiveButton(String text, final OnClickListener listener) {
         this.mPositiveButtonText = text;
         this.mPositiveButtonClickListener = listener;
         return this;
      }

      public Builder setNeutralButton(int textId,
                              final OnClickListener listener) {
         this.mNeutralButtonText = context.getText(textId);
         this.mNeutralButtonClickListener = listener;
         return this;
      }

      public Builder setNeutralButton(String text, final OnClickListener listener) {
         this.mNeutralButtonText = text;
         this.mNeutralButtonClickListener = listener;
         return this;
      }
      public Builder setNegativeButton(int textId,
                               final OnClickListener listener) {
         this.mNegativeButtonText = context.getText(textId);
         this.mNegativeButtonClickListener = listener;
         return this;
      }

      public Builder setNegativeButton(String text,
                               final OnClickListener listener) {
         this.mNegativeButtonText = text;
         this.mNegativeButtonClickListener = listener;
         return this;
      }


      public Builder setCancelable(boolean cancelable) {
         this.mCancelable = cancelable;
         return this;
      }

      public Builder setOnCancelListener(OnCancelListener listener) {
         this.mCancelListener = listener;
         return this;
      }

      public Builder setOnKeyListener(OnKeyListener listener) {
         this.mKeyListener = listener;
         return this;
      }

      public CustomDialog create() {
         LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
         final CustomDialog dialog = new CustomDialog(context, R.style.CustomDialog);
         dialog.setCancelable(mCancelable);
         //设置取消键事件
         if(mCancelListener != null) {
            dialog.setOnCancelListener(mCancelListener);
         }
         //设置键盘监听事件
         if(mKeyListener != null) {
            dialog.setOnKeyListener(mKeyListener);
         }
         //获取对话框布局
         View layout = inflater.inflate(R.layout.alert_dialog, (ViewGroup)(((Activity)context).findViewById(R.id.parentPanel)));
         layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT));

         //设置标题
         ((TextView) layout.findViewById(R.id.alertTitle)).setText(mTitle);
         //设置图标
         if(mIcon != -1) {
            ((ImageView) layout.findViewById(R.id.icon))
                  .setBackgroundResource(mIcon);
         }

         int count = 0;
         //设置确定按钮
         if(setButton(layout, mPositiveButtonText, R.id.button1, dialog, mPositiveButtonClickListener)) count++;
         // 设置拒绝按钮
         if(setButton(layout, mNegativeButtonText, R.id.button2, dialog, mNegativeButtonClickListener)) count++;
         // 设置中间按钮
         if(setButton(layout, mNeutralButtonText, R.id.button3, dialog, mNeutralButtonClickListener)) count++;

         if(count == 0) {
            layout.findViewById(R.id.buttonPanel).setVisibility(View.GONE);
         }
         //一个按钮时,显示两边空间
         if(count == 1) {
            layout.findViewById(R.id.leftSpacer)
                  .setVisibility(View.INVISIBLE);
            layout.findViewById(R.id.rightSpacer).setVisibility(View.INVISIBLE);
         }
         //设置提示消息
         if(!TextUtils.isEmpty(mMessage)) {
            ((TextView)layout.findViewById(R.id.message))
                  .setText(mMessage);
         } else {
            ((LinearLayout) layout.findViewById(R.id.contentPanel))
                  .setVisibility(View.GONE);
         }
         //设置提示内容布局
         if(mView != null) {
            final FrameLayout customPanel = (FrameLayout) layout
                  .findViewById(R.id.customPanel);
            if(mViewSpacingSpecified) {
               customPanel.setPadding(mViewSpacingLeft, mViewSpacingTop, mViewSpacingRight, mViewSpacingBottom);
            }
            customPanel.addView(mView);
         } else {
            ((FrameLayout) layout.findViewById(R.id.customPanel))
                  .setVisibility(View.GONE);
         }
         dialog.setContentView(layout);
         return dialog;

      }

      public CustomDialog show() {
         CustomDialog dialog = create();
         dialog.show();
         return dialog;
      }

      private boolean setButton(View layout, CharSequence mPositiveButtonText, int id, final Dialog dialog, final OnClickListener listener) {
         if(!TextUtils.isEmpty(mPositiveButtonText)) {
            final Button button = (Button) layout.findViewById(id);
            button.setText(mPositiveButtonText);
            if(listener != null) {
               button.setOnClickListener(new View.OnClickListener() {

                  @Override
                  public void onClick(View v) {
                     listener.onClick(dialog, DialogInterface.BUTTON_POSITIVE);
                  }
               });
            } else {
               //默认事件为关闭对话框
               button.setOnClickListener(new View.OnClickListener() {

                  @Override
                  public void onClick(View v) {
                     dialog.cancel();
                     dialog.dismiss();
                  }
               });
            }
            return true;
         } else {
            layout.findViewById(id).setVisibility(View.GONE);
            return false;
         }
      }
   }
}
activity_main.xml代码如下
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.astuetz.PagerSlidingTabStrip
        android:id="@+id/tabs"
        android:layout_width="match_parent"
        android:layout_height="48dip" />

    <android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_below="@+id/tabs"
        tools:context=".MainActivity" />

<FrameLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/content">

</FrameLayout>


</RelativeLayout>

main_menu.xml代码如下
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <item
        android:id="@+id/newMyMusic"
        android:title="@string/newMyMusic"
        android:orderInCategory="100"
        android:icon="@android:drawable/ic_menu_rotate"
        android:showAsAction="ifRoom"/>
    <item
        android:id="@+id/ilike"
        android:orderInCategory="200"
        android:title="@string/like_music"
        app:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_menu_set_as"/>
    <item
        android:id="@+id/near_play"
        android:orderInCategory="300"
        android:title="@string/recently_music"
        app:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_media_play"/>
    <item
        android:id="@+id/about"
        android:orderInCategory="400"
        android:title="@string/about"
        app:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_media_play"/>
    <item
        android:id="@+id/exit"
        android:orderInCategory="500"
        android:title="@string/exit"
        app:showAsAction="ifRoom"
        android:icon="@android:drawable/ic_media_play"/>

</menu>

alert_dialog.xml代码如下
<?xml version="1.0" encoding="UTF-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/parentPanel"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:padding="3dip" >

    <!-- 图标和标题 -->

    <LinearLayout
        android:id="@+id/topPanel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minHeight="45dip"
        android:orientation="vertical" >

        <LinearLayout
            android:id="@+id/title_template"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_margin="3dip"
            android:gravity="center_vertical"
            android:orientation="horizontal" >

            <ImageView
                android:id="@+id/icon"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:layout_gravity="top"
                android:layout_margin="3dip"
                android:src="@mipmap/ic_dialog" />

            <com.android.internal.widget.DialogTitle
                android:id="@+id/alertTitle"
                style="@style/textAppearanceDialogWindowTitle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:ellipsize="end"
                android:singleLine="true" />
        </LinearLayout>

        <ImageView
            android:id="@+id/titleDivider"
            android:layout_width="fill_parent"
            android:layout_height="1dip"
            android:layout_marginLeft="5dip"
            android:layout_marginRight="5dip"
            android:background="@color/dialog_line"
            android:gravity="fill_horizontal"
            android:scaleType="fitXY" />
    </LinearLayout>

    <!-- 显示内容消息 -->

    <LinearLayout
        android:id="@+id/contentPanel"
        android:layout_width="fill_parent"
        android:layout_height="0dp"
        android:layout_margin="5dp"
        android:layout_weight="1"
        android:orientation="vertical" >

        <ScrollView
            android:id="@+id/scrollView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:padding="5dip"
             >
            <TextView
                android:id="@+id/message"
                style="@style/textAppearanceDialogWindowTitle"
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:padding="5dip" />
        </ScrollView>
    </LinearLayout>
    <!-- 显示内容布局 -->

    <FrameLayout
        android:id="@+id/customPanel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:paddingBottom="5dip"
        android:paddingTop="5dip" >
    </FrameLayout>
    <!-- 按钮 -->

    <LinearLayout
        android:id="@+id/buttonPanel"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:minHeight="50dip"
        android:orientation="vertical" >

        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:gravity="center_horizontal"
            android:orientation="horizontal"
            android:paddingLeft="2dip"
            android:paddingRight="2dip"
            android:paddingTop="4dip" >

            <LinearLayout
                style="@style/btn_dialog"
                android:orientation="horizontal"
                android:id="@+id/leftSpacer"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                android:visibility="gone" />

            <Button
                android:id="@+id/button1"
                style="@style/btn_dialog"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:layout_weight="1"
                android:maxLines="2" />

            <Button
                android:id="@+id/button3"
                style="@style/btn_dialog"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_weight="1"
                android:maxLines="2" />

            <Button
                android:id="@+id/button2"
                style="@style/btn_dialog"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_gravity="right"
                android:layout_weight="1"
                android:maxLines="2" />

            <LinearLayout
                style="@style/btn_dialog"
                android:orientation="horizontal"
                android:id="@+id/rightSpacer"
                android:layout_width="0dip"
                android:layout_height="wrap_content"
                android:layout_weight="0.25"
                android:visibility="gone" />
        </LinearLayout>
    </LinearLayout>

</LinearLayout>

styles.xml代码如下
<resources>

    <style name="AppBaseTheme" parent="android:Theme.Light"></style>

    <style name="AppTheme" parent="AppBaseTheme">
        <item name="android:windowBackground">@mipmap/main_bg01</item>
        <item name="android:actionBarStyle">@style/ActionBarStyle</item>
    </style>

    <style name="ActionBarStyle" parent="@android:style/Widget.Holo.Light.ActionBar.Solid.Inverse">
        <item name="android:icon">@mipmap/app_logo4</item>
        <item name="android:background">#002D2C2C</item>
    </style>

    <style name="textAppearanceDialogWindowTitle">
        <item name="android:textSize">15sp</item>
        <item name="android:textColor">#FFFFFFFF</item>
        <item name="android:textStyle">normal</item>
    </style>

    <style name="CustomDialog">
        <!-- 屏幕背景不变暗 -->
        <!-- <item name="android:backgroundDimEnabled">false</item> -->
        <!-- 更换背景图片实现全透明 -->
        <item name="android:windowBackground">@color/translucence</item>
        <item name="android:windowNoTitle">true</item>
        <!-- 边框 -->
        <item name="android:windowFrame">@null</item>
        <!-- 是否悬浮在Activity之上 -->
        <item name="android:windowIsFloating">true</item>
        <!-- 半透明 -->
        <!-- <item name="android:windowIsTranslucent">true</item> -->
        <item name="android:windowContentOverlay">@null</item>
        <item name="android:windowTitleStyle">@style/dialogWindowTitle</item>
        <item name="android:windowAnimationStyle">@style/animationDialog</item>
        <item name="android:popupBackground">@color/translucence</item>
        <!--
      android:windowSoftInputMode = "adjustResize" ,软键盘弹出时,要对主窗口布局重新进行布局,并调用onSizeChanged方法,切记一点当我们设置为“adjustResize”时,我们的界面不要设置为全屏模式,否则设置了这个属性也不会有什么效果。
      而当我们设置android: windowSoftInputMode = "adjustPan"时,主窗口就不会调用onSizeChanged方法,界面的一部分就会被软键盘覆盖住,就不会被挤到软键盘之上了。
      -->
        <item name="android:windowSoftInputMode">adjustPan</item>
    </style>

    <style name="dialogWindowTitle">
        <item name="android:textAppearance">@style/textAppearanceDialogWindowTitle</item>
        <item name="android:maxLines">1</item>
        <item name="android:scrollHorizontally">true</item>
    </style>
    <style name="animationDialog">
        <item name="android:windowEnterAnimation">@anim/dialog_enter</item>
        <item name="android:windowExitAnimation">@anim/dialog_exit</item>
    </style>

    <style name="btn_dialog">
        <item name="android:layout_marginLeft">3dp</item>
        <item name="android:layout_marginRight">3dp</item>
        <item name="android:paddingLeft">25dp</item>
        <item name="android:paddingRight">25dp</item>
        <item name="android:paddingTop">10dp</item>
        <item name="android:paddingBottom">10dp</item>
        <item name="android:textSize">12sp</item>
        <item name="android:textColor">#FFFFFFFF</item>
        <item name="android:background">@drawable/btn_dialog</item>
    </style>

    <style name="btn_custom_style">
        <item name="android:layout_width">35dip</item>
        <item name="android:layout_height">35dip</item>
        <item name="android:layout_gravity">center|right</item>
        <item name="android:background">?android:listChoiceBackgroundIndicator</item>
    </style>

    <style name="NotificationContent">
        <item name="android:textColor">?android:attr/textColorPrimary</item>
    </style>

    <style name="NotificationTitle">
        <item name="android:textColor">?android:attr/textColorPrimary</item>
        <item name="android:textStyle">bold</item>
    </style>
</resources>
MuyuPlayerAPP.java代码如下
package com.haoxue.zixueplayer;

import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;

import com.haoxue.zixueplayer.utils.Constant;
import com.lidroid.xutils.DbUtils;

/**
 * Created by Administrator on 2016/7/29.
 */
public class MuyuPlayerApp extends Application{
    public static SharedPreferences sp;
    public static DbUtils dbUtils;
    public static Context context;
    @Override
    public void onCreate() {
        super.onCreate();
        sp=getSharedPreferences(Constant.SP_NAME, Context.MODE_PRIVATE);
        dbUtils=DbUtils.create(getApplicationContext(),Constant.DB_NAME);
        context=getApplicationContext();
    }
}





  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值