漫吧漫画阅读界面的搭建(一)基础布局搭建(完全代码)

第一篇链接 漫吧漫画阅读界面的搭建(一)基础布局搭建(上)

第二篇链接漫吧漫画阅读界面的搭建(一)基础布局搭建(下)

这一篇是完整代码的展示,博文是前两篇

方便起见,代码为一个文件

布局代码:

主布局:

<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"
                android:background="@color/colorSliteGray"
             tools:context="winter.zxb.smilesb101.cartoon8.WatchComicActivity">
    <!-- The primary full-screen view. This can be replaced with whatever view
         is needed to present your content, e.g. VideoView, SurfaceView,
         TextureView, etc. -->
    <android.support.v7.widget.RecyclerView
        android:id="@+id/fullscreen_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"/>
    <!--底部小的状态栏-->
    <LinearLayout
        android:id="@+id/small_status"
        android:layout_width="wrap_content"
        android:layout_height="30dp"
        android:layout_alignParentEnd="true"
        android:layout_alignParentBottom="true"
        android:background="@drawable/round_rect_pressed"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/comic_name_bottom"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:textColor="@color/colorSliteGray"
            android:gravity="center"
            android:layout_marginLeft="2dp"
            android:maxLines="1"
            android:textSize="12sp"/>
        <TextView
            android:id="@+id/comic_pic_state"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textColor="@color/colorSliteGray"
            android:layout_marginLeft="10dp"
            android:maxLines="1"
            android:textSize="12sp"/>
        <TextView
            android:id="@+id/time"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textColor="@color/colorSliteGray"
            android:layout_marginLeft="10dp"
            android:maxLines="1"
            android:textSize="12sp"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:textColor="@color/colorSliteGray"
            android:text="@string/battery"
            android:layout_marginLeft="10dp"
            android:maxLines="1"
            android:textSize="12sp"/>
        <TextView
            android:id="@+id/battery"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:gravity="center"
            android:maxLines="1"
            android:textColor="@color/colorSliteGray"
            android:layout_marginRight="20dp"
            android:textSize="12sp"/>
    </LinearLayout>

    <!--菜单按钮区域(实际作用区域)-->
    <LinearLayout
        android:id="@+id/menu_ctrl"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:visibility="visible">
        <!--上一话-->
        <TextView
            android:id="@+id/preHUAText"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        </TextView>
        <!--显示或者隐藏状态栏的触发器-->
        <TextView
            android:id="@+id/toogle"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_centerInParent="true"></TextView>
        <!--下一话-->
        <TextView
            android:id="@+id/nextHUAText"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1">
        </TextView>
    </LinearLayout>
    <!--菜单按钮效果效果区域-->
    <LinearLayout
        android:id="@+id/menu_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:visibility="gone">
        <!--上一话-->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="@string/preHUA"
            android:textColor="@color/colorWrite"
            android:background="#50000000"
            android:gravity="center"
            android:textSize="30sp">
        </TextView>
        <!--显示或者隐藏状态栏的触发器-->
        <TextView

            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:layout_centerInParent="true"
            android:background="#50000000"
            android:textSize="30sp"
            android:text="@string/menu"
            android:textColor="@color/colorWrite"
            android:gravity="center"
            android:layout_marginTop="10dp"
            android:layout_marginBottom="10dp"></TextView>
        <!--下一话-->
        <TextView
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:text="@string/nextHUA"
            android:textColor="@color/colorWrite"
            android:background="#50000000"
            android:gravity="center"
            android:textSize="30sp">
        </TextView>
    </LinearLayout>

    <!--顶部栏-->
    <LinearLayout
        android:id="@+id/top_layout"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:background="#80000000"
        android:visibility="gone">
        <LinearLayout
            android:layout_width="0dp"
            android:layout_height="match_parent"
            android:layout_weight="1"
            android:orientation="horizontal">
            <Button
                android:id="@+id/back_btn"
                android:layout_width="10dp"
                android:layout_height="20dp"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="15dp"
                android:background="@mipmap/arrow_left_better"/>
            <TextView
                android:id="@+id/comic_name"
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:layout_gravity="center_vertical"
                android:gravity="center"
                android:layout_marginLeft="10dp"
                android:textColor="@color/colorWrite"/>
            <TextView
                android:id="@+id/comic_pic_state_top"
                android:layout_width="wrap_content"
                android:layout_height="30dp"
                android:layout_marginLeft="10dp"
                android:textColor="@color/colorWrite"
                android:layout_gravity="center_vertical"
                android:gravity="center"/>
        </LinearLayout>

        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:layout_marginLeft="10dp">
            <Button
                android:id="@+id/show_menuBtn"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@mipmap/info_72px"
                android:layout_marginRight="10dp"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="10dp"/>
            <Button
                android:id="@+id/feed_backBtn"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@mipmap/edit_71"
                android:layout_marginRight="10dp"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="10dp"/>
            <Button
                android:id="@+id/downloadpic_Btn"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@mipmap/download_46"
                android:layout_marginRight="10dp"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="10dp"/>
            <Button
                android:id="@+id/sharePicBtn"
                android:layout_width="20dp"
                android:layout_height="20dp"
                android:background="@mipmap/external_link_75"
                android:layout_marginRight="20dp"
                android:layout_gravity="center_vertical"
                android:layout_marginLeft="10dp"/>
        </LinearLayout>
    </LinearLayout>

    <!--SeekBar的操作提示栏,默认不可见,按下SeekBar可见,抬起不可见-->
    <RelativeLayout
        android:id="@+id/bottom_seekBar_help"
        android:layout_width="match_parent"
        android:layout_height="30dp"
        android:layout_above="@+id/bottom_layout"
        android:layout_marginBottom="10dp"
        android:background="#80000000"
        android:visibility="gone">
        <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="horizontal"
            android:layout_centerInParent="true">
            <TextView
                android:id="@+id/seekBar_help_now"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_gravity="center"
                android:textColor="@color/colorAqua"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:gravity="center"
                android:layout_gravity="center"
                android:text=" / "
                android:textColor="@color/colorSliteGray"/>
            <TextView
                android:id="@+id/seekBar_help_num"
                android:layout_width="wrap_content"
                android:layout_height="match_parent"
                android:layout_gravity="center"
                android:gravity="center"
                android:textColor="@color/colorSliteGray"/>
        </LinearLayout>

    </RelativeLayout>
    <!--底部栏-->
<LinearLayout
    android:id="@+id/bottom_layout"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:layout_alignParentBottom="true"
    android:background="#80000000"
    android:visibility="gone">
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:orientation="horizontal"
        android:layout_marginBottom="10dp"
        android:layout_marginLeft="15dp"
        android:layout_marginRight="15dp"
        android:layout_marginTop="10dp">
        <TextView
            android:id="@+id/preHUA"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/preHUA"
            android:textColor="@color/colorSliteGray"
            android:gravity="center"/>
        <SeekBar
            android:id="@+id/bottom_seekBar"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:layout_weight="1"
            android:layout_gravity="center"/>
        <TextView
            android:id="@+id/nextHUA"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:text="@string/nextHUA"
            android:textColor="@color/colorSliteGray"
            android:gravity="center"/>
    </LinearLayout>
<!--底部菜单栏-->
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"        android:layout_marginBottom="10dp"
        android:orientation="horizontal"
        android:layout_marginLeft="20dp"
        android:layout_marginRight="20dp">
        <LinearLayout
        android:id="@+id/indexBtn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@mipmap/menu_expanded_109"
            android:layout_gravity="center"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="center"
            android:gravity="center"
            android:textColor="@color/colorSliteGray"
            android:text="@string/index"/>
    </LinearLayout>

        <LinearLayout
            android:id="@+id/download_comic_Btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical">
            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@mipmap/downloadbtn"
                android:layout_gravity="center"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_gravity="center"
                android:textColor="@color/colorSliteGray"
                android:text="@string/download"/>
        </LinearLayout>

        <LinearLayout
        android:id="@+id/light_btn"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:orientation="vertical">
        <ImageView
            android:layout_width="30dp"
            android:layout_height="30dp"
            android:src="@mipmap/light_bulb_46"
            android:layout_gravity="center"/>
        <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:gravity="center"
            android:layout_gravity="center"
            android:textColor="@color/colorSliteGray"
            android:text="@string/light"/>
    </LinearLayout>

        <LinearLayout
            android:id="@+id/phone_switch"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical">
            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@mipmap/phonestatus_switch"
                android:layout_gravity="center"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_gravity="center"
                android:textColor="@color/colorSliteGray"
                android:text="@string/landscape"/>
        </LinearLayout>

        <LinearLayout
            android:id="@+id/options_btn"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:orientation="vertical">
            <ImageView
                android:layout_width="30dp"
                android:layout_height="30dp"
                android:src="@mipmap/options_72"
                android:layout_gravity="center"/>
            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:gravity="center"
                android:layout_gravity="center"
                android:textColor="@color/colorSliteGray"
                android:text="@string/options"/>
        </LinearLayout>
    </LinearLayout>
</LinearLayout>
</RelativeLayout>

RecyclerView item布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
              android:orientation="vertical"
              android:layout_width="match_parent"
              android:layout_height="match_parent">
<RelativeLayout
    android:layout_width="match_parent"
    android:layout_weight="1"
    android:layout_height="0dp">
    <!--做出占位的字,图片加载出来后会被图片覆盖-->
    <TextView
        android:id="@+id/textView"
        android:background="@color/colorSliteGray"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:textColor="@color/colorDimGray"
        android:text="1"
        android:textSize="80sp"
        android:gravity="center"/>
    <ImageView
        android:id="@+id/imageView"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="fitXY"
        android:layout_gravity="center"/>
</RelativeLayout>
<!--分隔线,让布局看起来更清晰,可以去掉-->
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="3dp"
    android:background="@color/colorSliteGray"
    android:layout_alignParentBottom="true"></LinearLayout>
</LinearLayout>


控制代码:

package winter.zxb.smilesb101.cartoon8;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.media.Image;
import android.os.AsyncTask;
import android.os.BatteryManager;
import android.os.Message;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.os.Handler;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.Button;
import android.widget.ImageSwitcher;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;

import java.util.ArrayList;

import ComicData.Comic;
import RetailsWorm.HtmlAnalysisUtils;
import RetailsWorm.NetWorkUtils;
import Utils.Utils;

import static ComicData.comicStaticValue.COMIC_PICS;
import static ComicData.comicStaticValue.COMIC_PIC_DOM;

/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 */
public final class WatchComicActivity extends AppCompatActivity implements View.OnClickListener{
	/**
	 * Whether or not the system UI should be auto-hidden after
	 * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
	 */
	private static final boolean AUTO_HIDE = true;

	/**
	 * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
	 * user interaction before hiding the system UI.
	 */
	private static final int AUTO_HIDE_DELAY_MILLIS = 1000;

	/**
	 * 动画时间
	 */
	private static final int UI_ANIMATION_DELAY = 200;
	private final Handler mHideHandler = new Handler();
	private RecyclerView mContentView;
	private View mControlsView;
	private MyContentViewAdapter adapter;
	private int adapterNowPos,allItems;
	private final Runnable mShowPart2Runnable = new Runnable(){
		@Override
		public void run(){
			// Delayed display of UI elements
			ActionBar actionBar = getSupportActionBar();
			if(actionBar != null) {
				actionBar.show();
			}
		}
	};
	/**
	 * 显示或者隐藏状态
	 */
	private boolean mVisible;
	Handler handler = new Handler(){
		@Override
		public void handleMessage(Message msg){
			switch(msg.what) {
				case NetWorkUtils.MSG_HTML:
					String html = msg.obj.toString();
					if(!html.equals(NetWorkUtils.HTML_EMPTY)) {
						InitLayoutValue(html);
					}
					else
					{
						Log.i(TAG,"handleMessage: 网络错误!!");
					}
					break;
			}
		}
	};

	/**
	 * 处理网页
	 * @param html
	 */
	void InitLayoutValue(final String html)
	{
		new AsyncTask<String,Void,Void>(){
			@Override
			protected Void doInBackground(String... params){
				Log.i(TAG,"doInBackground: 后台操作获取图片");
				comic = new Comic();
				comic_Pics = HtmlAnalysisUtils.getComicPicsString(params[0],COMIC_PICS,5);//第5个位置是图片位置
				comic.setName(HtmlAnalysisUtils.getComicDetails(params[0],COMIC_PIC_DOM.get(2),HtmlAnalysisUtils.WHAT_innerHTML).get(0));
				comic_hua = HtmlAnalysisUtils.getComicDetails(params[0],COMIC_PIC_DOM.get(1),HtmlAnalysisUtils.WHAT_innerHTML).get(0).replace(comic.getName(),"");//去掉多余的名称
				return null;
			}

			@Override
			protected void onPostExecute(Void aVoid){
				super.onPostExecute(aVoid);
				//Log.i(TAG,"onPostExecute: 获取图片完成");
				comic_name_bottom.setText(comic_hua);
				comic_name_top.setText(comic_hua);
				if(comic_Pics!=null)
				{
					Log.i(TAG,"onPostExecute: "+comic_Pics.get(1));
					//实例化adapter
					mContentView.setLayoutManager(new LinearLayoutManager(activity));
					adapter = new MyContentViewAdapter(comic_Pics);
					mContentView.setAdapter(adapter);
					mContentView.setOnScrollListener(scrollListener);
				}
			}
		}.execute(html);
	}
	private RecyclerView.OnScrollListener scrollListener = new RecyclerView.OnScrollListener(){
		@Override
		public void onScrolled(RecyclerView recyclerView,int dx,int dy){
			super.onScrolled(recyclerView,dx,dy);
			LinearLayoutManager l = (LinearLayoutManager)recyclerView.getLayoutManager();
			adapterNowPos = l.findFirstVisibleItemPosition();
			allItems = l.getItemCount();
			//设置seekbar
			seekBar.setMax(allItems-1);
			Log.i(TAG,"onScrolled: "+allItems);
			seekBar.setProgress(adapterNowPos);
			setpicText();//设置文字
		}
	};
	private static final String TAG = "WatchComicActivity";
	/**
	 * 漫画的VALUE
	 */
	public static String COMIC_VALUE = "COMIC";
	public static String COMIC_LINK = "CMOIC_LINK";
	public static String COMIC_HUA = "HUA";
	public static String COMIC_NAME = "NAME";
	private Comic comic;
	private String comic_link;
	private String comic_hua;
	private ArrayList<String> comic_Pics;
	private Activity activity;
	private LinearLayout toplayout;
	private Button showCtrlbtn,backBtn,feedbackBtn,downLoadPicBtn,sharePicBtn;
	private LinearLayout bottomlayout;
	private TextView nextToogle,toogleBtn,preToogle;
	private LinearLayout menu_content;
	private TextView comic_name_bottom,comic_pic_state,time,battery;
	private SeekBar seekBar;
	private LinearLayout small_status;
	private RelativeLayout bottom_seekBar_help;

	private TextView seekBar_help_now,seekBar_help_num;

	private Button backbtn;
	private TextView comic_name_top,pic_state_top;

	private LinearLayout indexBtn,download_comic_Btn,light_btn,phone_switch,options_btn;
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);

		setContentView(R.layout.activity_watch_comic);

		//注册电量监听广播
		registerReceiver(batterReceiver,new IntentFilter(Intent.ACTION_BATTERY_CHANGED));

		mVisible = false;//一开始是不可见状态
		mContentView = (RecyclerView)findViewById(R.id.fullscreen_content);
		toplayout = (LinearLayout)findViewById(R.id.top_layout);
		bottomlayout = (LinearLayout)findViewById(R.id.bottom_layout);
		toogleBtn = (TextView)findViewById(R.id.toogle);
		nextToogle = (TextView)findViewById(R.id.nextHUAText);
		preToogle = (TextView)findViewById(R.id.preHUAText);
		menu_content = (LinearLayout)findViewById(R.id.menu_content);
		showCtrlbtn = (Button)findViewById(R.id.show_menuBtn);
		backBtn = (Button)findViewById(R.id.back_btn);
		feedbackBtn = (Button)findViewById(R.id.feed_backBtn);
		downLoadPicBtn = (Button)findViewById(R.id.downloadpic_Btn);
		sharePicBtn = (Button)findViewById(R.id.sharePicBtn);
		bottom_seekBar_help = (RelativeLayout)findViewById(R.id.bottom_seekBar_help);
		seekBar_help_now = (TextView)findViewById(R.id.seekBar_help_now);
		seekBar_help_num = (TextView)findViewById(R.id.seekBar_help_num);

		menu_content.setOnClickListener(this);
		showCtrlbtn.setOnClickListener(this);
		backBtn.setOnClickListener(this);
		feedbackBtn.setOnClickListener(this);
		downLoadPicBtn.setOnClickListener(this);
		sharePicBtn.setOnClickListener(this);

		comic_name_bottom = (TextView)findViewById(R.id.comic_name_bottom);
		comic_pic_state = (TextView)findViewById(R.id.comic_pic_state);
		time = (TextView)findViewById(R.id.time);
		battery = (TextView)findViewById(R.id.battery);
		time.setText(Utils.getTimeHour());
		small_status = (LinearLayout)findViewById(R.id.small_status);
		seekBar = (SeekBar)findViewById(R.id.bottom_seekBar);
		seekBar.setOnSeekBarChangeListener(seekChangerListener);
		//Log.i(TAG,"onCreate: "+Utils.getPhoneBatteryInfo(this,BatteryManager.BATTERY_PROPERTY_CURRENT_NOW,Utils.DATATYPE_INT));

		toogleBtn.setOnClickListener(this);
		nextToogle.setOnClickListener(this);
		preToogle.setOnClickListener(this);
		toogleBtn.setOnTouchListener(ctrl_touchlistenner);
		nextToogle.setOnTouchListener(ctrl_touchlistenner);
		preToogle.setOnTouchListener(ctrl_touchlistenner);

		comic_name_top = (TextView)findViewById(R.id.comic_name);
		pic_state_top = (TextView)findViewById(R.id.comic_pic_state_top);

		//底边菜单
		indexBtn = (LinearLayout)findViewById(R.id.indexBtn);
		download_comic_Btn = (LinearLayout)findViewById(R.id.download_comic_Btn);
		light_btn = (LinearLayout)findViewById(R.id.light_btn);
		phone_switch = (LinearLayout)findViewById(R.id.phone_switch);
		options_btn  = (LinearLayout)findViewById(R.id.options_btn);

		indexBtn.setOnClickListener(this);
		download_comic_Btn.setOnClickListener(this);
		light_btn.setOnClickListener(this);
		phone_switch.setOnClickListener(this);
		indexBtn.setOnClickListener(this);
		options_btn.setOnClickListener(this);

		activity = this;
		if(getIntent()!=null)
		{
			Intent intent = getIntent();
			comic = (Comic)intent.getSerializableExtra(COMIC_VALUE);
			comic_link = intent.getStringExtra(COMIC_LINK);
			new Runnable(){
				@Override
				public void run(){
					NetWorkUtils.getHtmlPage(activity,comic_link,handler);//获取网页数据
				}
			}.run();
		}
	}


	private float Sy = 0,Ey = 0;//放在外面是为了更新sy的值,让滑动更加顺滑
	/**
	 * 控制板的触摸事件监听,用来处理滑动冲突(控制面板与recyclerView的滑动冲突)
	 */
	View.OnTouchListener ctrl_touchlistenner = new View.OnTouchListener(){
		@Override
		public boolean onTouch(View v,MotionEvent event){
			switch(event.getAction())
			{
				case MotionEvent.ACTION_DOWN:
					Sy = event.getY();
					//Log.i(TAG,"onTouch: 按下事件 "+Sy);
				break;
				case MotionEvent.ACTION_MOVE:
					Ey = event.getY();
					float res = (Ey-Sy);
					//Log.i(TAG,"onTouch: 分发事件给recyclerView 移动距离为 "+res);
					//让RecyclerView开始滑动
					mContentView.scrollBy(mContentView.getScrollX(),mContentView.getScrollY()-(int)res);
					Sy = event.getY();//更新开始位置
					break;
			}
			return false;
		}
	};

	/**
	 * seekBar值改变的监听
	 */
	SeekBar.OnSeekBarChangeListener seekChangerListener = new SeekBar.OnSeekBarChangeListener(){
		@Override
		public void onProgressChanged(SeekBar seekBar,int progress,boolean fromUser){
			//更新辅助面板
			if(bottom_seekBar_help.getVisibility()==View.VISIBLE) {
				seekBar_help_now.setText(progress + 1+"");
			}
		}

		@Override
		public void onStartTrackingTouch(SeekBar seekBar){
            //显示辅助面板
			bottom_seekBar_help.setVisibility(View.VISIBLE);
			seekBar_help_num.setText(seekBar.getMax()+1+"");//设置总数
		}

		@Override
		public void onStopTrackingTouch(SeekBar seekBar){
			//关闭辅助面板
			bottom_seekBar_help.setVisibility(View.GONE);
			int progress = seekBar.getProgress();
			Log.i(TAG,"onProgressChanged: 选择了,第"+progress);
			//设置图片状态(1/9);
			adapterNowPos = progress;
			setpicText();
			mContentView.scrollToPosition(adapterNowPos);//不能平稳滑动,否者联动出错
		}
	};

	/**
	 * 设置图片文字(第几张/总共几张)
	 */
	void setpicText()
	{
		String s = adapterNowPos+1+ "/" + allItems;
		comic_pic_state.setText(s);//设置图片的数量
		pic_state_top.setText(s);
	}
	/**
	 * 展示上下栏
	 */
	void showPanel()
	{
		//Log.i(TAG,"hidePanel: 显示");
		TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,1.0f,Animation.RELATIVE_TO_SELF,0.0f);
		TranslateAnimation translateAnimation1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,
				Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
				-1.0f, Animation.RELATIVE_TO_SELF, 0.0f);
		translateAnimation.setDuration(UI_ANIMATION_DELAY);
		translateAnimation1.setDuration(UI_ANIMATION_DELAY);
		toplayout.setAnimation(translateAnimation1);
		bottomlayout.setAnimation(translateAnimation);
		toplayout.setVisibility(View.VISIBLE);//这里通过改变可见性来播放动画
		bottomlayout.setVisibility(View.VISIBLE);//这里通过改变可见性来播放动画
		//底部状态栏消失
		small_status.setVisibility(View.GONE);
		//隐藏上下操作板,注意只能是隐藏,不能GONE,否者会导致中间控制板占据所有屏幕的问题
		nextToogle.setVisibility(View.INVISIBLE);
		preToogle.setVisibility(View.INVISIBLE);
	}

	/**
	 * 隐藏上下栏
	 */
	void hidePanel()
	{
		//Log.i(TAG,"hidePanel: 隐藏");
		TranslateAnimation translateAnimation = new TranslateAnimation(Animation.RELATIVE_TO_SELF,0.0f,
				Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,0.0f,Animation.RELATIVE_TO_SELF,-1.0f);
		TranslateAnimation translateAnimation1 = new TranslateAnimation(Animation.RELATIVE_TO_SELF, 0.0f,
				Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF,
				0.0f, Animation.RELATIVE_TO_SELF, 1.0f);
		translateAnimation.setDuration(UI_ANIMATION_DELAY);
		translateAnimation1.setDuration(UI_ANIMATION_DELAY);
		toplayout.setAnimation(translateAnimation);
		bottomlayout.setAnimation(translateAnimation1);
		toplayout.setVisibility(View.INVISIBLE);//这里通过改变可见性来播放动画
		bottomlayout.setVisibility(View.INVISIBLE);//这里通过改变可见性来播放动画
		//底部状态栏显示
		small_status.setVisibility(View.VISIBLE);
		//显示上下操作板
		nextToogle.setVisibility(View.VISIBLE);
		preToogle.setVisibility(View.VISIBLE);
	}

	/**
	 * 触发器用来控制显示与隐藏
	 */
	void toogle()
	{
		if(mVisible)
		{
			hidePanel();
			mVisible = false;
		}
		else
		{
			showPanel();
			mVisible = true;
		}
	}

	@Override
	public void onClick(View v){
		switch(v.getId())
		{
			case R.id.back_btn://返回按钮
				onBackPressed();//调用返回
				break;
			case R.id.show_menuBtn://显示操作平台按钮
				//Log.i(TAG,"onClick: 操作平台按钮");
				if(View.GONE == menu_content.getVisibility()) {
					menu_content.setVisibility(View.VISIBLE);
					hidePanel();
					mVisible = false;
					//底部状态栏消失
					small_status.setVisibility(View.GONE);
				}
				break;
			case R.id.feed_backBtn://反馈按钮
				break;
			case R.id.downloadpic_Btn://下载此张图片按钮
				break;
			case R.id.sharePicBtn://分享漫画链接或者此张图片
				break;
			case R.id.toogle:
				//Log.i(TAG,"onClick: 隐藏按钮按下");
				toogle();
				break;
			case R.id.nextHUAText://下一张图片
				adapterNowPos++;
				scroolRV_To(adapterNowPos);
				break;
			case R.id.preHUAText://上一张图片
				adapterNowPos--;
				scroolRV_To(adapterNowPos);
				break;
			case R.id.menu_content://操作面板容器
				menu_content.setVisibility(View.GONE);
				//底部状态栏显示
				small_status.setVisibility(View.GONE);
				break;
			case R.id.indexBtn://目录按钮
				//目录界面
				break;
			case R.id.download_comic_Btn://下载漫画按钮
				break;
			case R.id.light_btn://亮度按钮
				break;
			case R.id.phone_switch://切换手机的横竖屏
				break;
			case R.id.options_btn://选项按钮
				break;
		}
	}

	/**
	 * 滚动到位置
	 * @param pos
	 */
	void scroolRV_To(int pos)
	{
		if(adapterNowPos>=allItems)
		{
			adapterNowPos = allItems;
			Toast.makeText(this,"已经到顶啦!",Toast.LENGTH_SHORT);
		}
		else if(adapterNowPos <= 0)
		{
			adapterNowPos = 0;
			Toast.makeText(this,"已经到底啦!",Toast.LENGTH_SHORT);
		}
		mContentView.smoothScrollToPosition(adapterNowPos);
	}

	/**
	 * 图片显示view的adapter
	 */
	class MyContentViewAdapter extends RecyclerView.Adapter
	{

		private ArrayList<String> pics;
		private Context context;

		public MyContentViewAdapter(ArrayList<String> pics){
			this.pics = pics;
		}

		@Override
		public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent,int viewType){
			context = parent.getContext();
			View view = LayoutInflater.from(context)
					.inflate(R.layout.comicpics_item,parent,false);
			return new MyViewHolder(view);
		}

		@Override
		public void onBindViewHolder(RecyclerView.ViewHolder holder,int position){
			MyViewHolder myViewHolder = (MyViewHolder)holder;
			myViewHolder.textView.setText(position+1+"");//设置占位
			Glide.with(context)
					.load(pics.get(position))
					.into(myViewHolder.imageView);
		}

		@Override
		public int getItemCount(){
			return pics.size();
		}

		class MyViewHolder extends RecyclerView.ViewHolder{
			private View rootView;
			private ImageView imageView;
			private TextView textView;
			public MyViewHolder(View itemView){
				super(itemView);
				rootView = itemView;
				imageView = (ImageView)rootView.findViewById(R.id.imageView);
				textView = (TextView)rootView.findViewById(R.id.textView);
			}
		}
	}
	public BroadcastReceiver batterReceiver  = new BroadcastReceiver(){
		@Override
		public void onReceive(Context context,Intent intent){
			int level = intent.getIntExtra("level",0);
			//Log.i(TAG,"onReceive: "+level);
			battery.setText(level+"%");
		}
	};
}





评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值