package com.cjj.cartoon;
import java.io.File;
import me.drakeet.materialdialog.MaterialDialog;
import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.os.Bundle;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.provider.Settings.System;
import android.provider.SyncStateContract.Constants;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.widget.Toolbar;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.SeekBar;
import android.widget.SeekBar.OnSeekBarChangeListener;
import android.widget.TextView;
import android.widget.Toast;
import com.cjj.cartoon.callback.SeekbarImagePageCallback;
import com.cjj.cartoon.constants.Constant;
import com.cjj.cartoon.fragment.ComicImageFragment;
import com.cjj.cartoon.fragment.ComicImageFragment.ImageNumberFragmentCallBack;
import com.cjj.cartoon.util.SaveImageUtils;
import com.cjj.cartoon.util.SettingUtils;
import com.cjj.cartoon.util.ShareViewTask;
public class ComicImageViewActivity extends ActionBarActivity implements ImageNumberFragmentCallBack{
private Toolbar toolbar ;
private RelativeLayout bottom_view;
public static ComicImageViewActivity comicImageViewActivity;
public View ll_right_tip;
private SeekBar seekBar;
private TextView tv_tip_page;
private int size = 0;
private SeekbarImagePageCallback seekbarImagePageCallback;
private TextView tv_tip_right,tv_light,tv_pic;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// this.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉标题栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);//去掉信息栏
/**
* 设置为横屏
*/
// if(getRequestedOrientation()!=ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE){
// setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
// }
setContentView(R.layout.activity_comic);
comicImageViewActivity = this;
init();
logic();
Bundle bundle = getIntent().getExtras();
if (bundle != null)
getSupportFragmentManager()
.beginTransaction()
.replace(
R.id.fl_comic,
ComicImageFragment.newInstance(bundle
.getString("url"),bundle.getString("title"))).commit();
LightShow();
}
private void LightShow() {
// preview brightness changes at this window
// get the current window attributes
LayoutParams layoutpars = getWindow().getAttributes();
// set the brightness of this window
int light = 100;
try {
light = Settings.System.getInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS);
layoutpars.screenBrightness = SettingUtils.getSetting(ComicImageViewActivity.this, "light", light) / (float) 255;
// apply attribute changes to this window
getWindow().setAttributes(layoutpars);
} catch (SettingNotFoundException e) {
e.printStackTrace();
}
}
private void init() {
initToorbar();
initbottomView();
initTipView();
}
private void initTipView() {
ll_right_tip = this.findViewById(R.id.ll_right);
ll_right_tip.setVisibility(View.GONE);
ll_right_tip.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ll_right_tip.setVisibility(View.GONE);
ComicImageFragment.instance.showBatteryTip();
}
});
}
private void initbottomView() {
bottom_view = (RelativeLayout) this.findViewById(R.id.bottom_view);
tv_tip_right = (TextView) this.findViewById(R.id.tv_tip);
tv_tip_right.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ll_right_tip.setVisibility(View.VISIBLE);
hideMenuView();
}
});
bottom_view.setVisibility(View.GONE);
/**亮度*/
tv_light = (TextView) this.findViewById(R.id.tv_light);
tv_light.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialogLightSeeting("调节系统亮度");
}
});
/**截图*/
tv_pic = (TextView) this.findViewById(R.id.tv_pic);
tv_pic.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
showDialogPicSelect();
}
});
}
/**
* 图片截图框
*/
protected void showDialogPicSelect() {
final ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(
this,
R.layout.item_text
);
arrayAdapter.add("分享图片");
arrayAdapter.add("保存图片至图册");
arrayAdapter.add("保存图片至文件夹");
ListView listView = new ListView(this);
float scale = getResources().getDisplayMetrics().density;
int dpAsPixels = (int) (8 * scale + 0.5f);
listView.setPadding(0, dpAsPixels, 0, dpAsPixels);
listView.setDividerHeight(0);
listView.setAdapter(arrayAdapter);
final MaterialDialog alert = new MaterialDialog(this)
.setContentView(listView);
listView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
alert.dismiss();
switch(position)
{
case 0:
sharePic();
break;
case 1:
savePicInGarrery();
break;
case 2:
savePicInSdCard();
break;
}
}
});
alert.show();
}
/**
* 保存图片到sdcard
*/
protected void savePicInSdCard() {
hideMenuView();
try {
File path = SaveImageUtils.saveImageToFile(SaveImageUtils.getBitmapScreen(ComicImageViewActivity.this), ComicImageViewActivity.this);
Toast.makeText(this, "保存至"+path, Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(this, "保存失败,内存不足", 1000).show();
e.printStackTrace();
}
showMenuView();
}
/**
* 保存图片至相册
*/
protected void savePicInGarrery() {
hideMenuView();
try {
SaveImageUtils.saveImageToGallery(ComicImageViewActivity.this, ComicImageViewActivity.this);
Toast.makeText(this, "保存手机图册成功", Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(this, "保存失败,内存不足", 1000).show();
e.printStackTrace();
}
showMenuView();
}
/**
* 亮度框
* @param string
*/
protected void showDialogLightSeeting(String string) {
final MaterialDialog dialog = new MaterialDialog(this);
dialog.setTitle(string);
dialog.setPositiveButton("确定", new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
old_brightness = brightness;
SettingUtils.setSetting(ComicImageViewActivity.this, "light", brightness);
}
});
dialog.setNegativeButton("取消", new OnClickListener() {
@Override
public void onClick(View v) {
dialog.dismiss();
LayoutParams layoutpars = getWindow().getAttributes();
// set the brightness of this window
layoutpars.screenBrightness = old_brightness / (float) 255;
// apply attribute changes to this window
getWindow().setAttributes(layoutpars);
}
});
View customView = getLayoutInflater().inflate(R.layout.seekbar_light, null);
createSeekBar(customView);
dialog.setContentView(customView);
dialog.show();
}
// protected void showDialogLightSeeting(String title,String okbtn,String message) {
// CustomDialog.Builder builder = new CustomDialog.Builder(ComicImageViewActivity.this, title, okbtn);
// // Now we can any of the following methods.
//// builder.content(message);
// builder.darkTheme(false);
// builder.titleColor(this.getResources().getColor(R.color.tab_color_pre));
//// builder.contentColor(this.getResources().getColor(R.color.tab_color_pre));
// builder.positiveColor(this.getResources().getColor(R.color.tab_color_pre));
// builder.titleTextSize(15);
// builder.negativeText("取消");
// builder.negativeColor(this.getResources().getColor(R.color.tab_color_pre));
// // Now we can build the dialog.
// CustomDialog customDialog = builder.build();
// View customView = getLayoutInflater().inflate(R.layout.seekbar_light, null);
// createSeekBar(customView);
// customDialog.setCustomView(customView);
//// // Show the dialog.
// customDialog.setClickListener(new CustomDialog.ClickListener() {
// @Override
// public void onConfirmClick() {
// old_brightness = brightness;
// SettingUtils.setSetting(ComicImageViewActivity.this, "light", brightness);
// }
//
// @Override
// public void onCancelClick() {
// LayoutParams layoutpars = getWindow().getAttributes();
// // set the brightness of this window
// layoutpars.screenBrightness = old_brightness / (float) 255;
// // apply attribute changes to this window
// getWindow().setAttributes(layoutpars);
// }
// });
// customDialog.show();
// }
int brightness;
int old_brightness = 100;
public void createSeekBar(View customView)
{
SeekBar brightbar = (SeekBar) customView.findViewById(R.id.seekBar_light);
brightbar.setMax(255);
brightbar.setProgress(200);
try {
// get the current system brightness
brightness = System.getInt(this.getContentResolver(),
System.SCREEN_BRIGHTNESS);
brightbar.setProgress(SettingUtils.getSetting(ComicImageViewActivity.this, "light", 125));
} catch (SettingNotFoundException e) {
Toast.makeText(this, "不能获取系统亮度", Toast.LENGTH_SHORT).show();
return;
}
// register OnSeekBarChangeListener, so it can actually change values
brightbar.setOnSeekBarChangeListener(new OnSeekBarChangeListener() {
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
// set the system brightness using the brightness variable value
// if(Settings.System.getInt(cResolver,
// Settings.System.SCREEN_BRIGHTNESS_MODE) ==
// Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC)
// System.putInt(cResolver, System.SCREEN_BRIGHTNESS,
// brightness);
// preview brightness changes at this window
// get the current window attributes
LayoutParams layoutpars = getWindow().getAttributes();
// set the brightness of this window
layoutpars.screenBrightness = brightness / (float) 255;
// apply attribute changes to this window
getWindow().setAttributes(layoutpars);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
// sets the minimal brightness level
// if seek bar is 20 or any value below
if (progress <= 10) {
// set the brightness to 20
brightness = 10;
} else // brightness is greater than 20
{
// sets brightness variable based on the progress bar
brightness = progress;
}
}
});
}
private void initToorbar() {
toolbar = (Toolbar) findViewById(R.id.toolbar2);
toolbar.setTitle("");
toolbar.setVisibility(View.GONE);
setSupportActionBar(toolbar);
// Menu item click 的監聽事件一樣要設定在 setSupportActionBar 才有作用
toolbar.setOnMenuItemClickListener(onMenuItemClick);
toolbar.setNavigationIcon(R.drawable.adward_navigationbar_icon_back);
toolbar.setNavigationOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
ComicImageViewActivity.this.finish();
overridePendingTransition(R.anim.hold, R.anim.left);
}
});
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
ComicImageViewActivity.this.finish();
overridePendingTransition(R.anim.hold, R.anim.left);
return true;
}
return super.onKeyDown(keyCode, event);
}
private void logic() {
tv_tip_page = (TextView) this.findViewById(R.id.tv_page_tip);
seekBar = (SeekBar) this.findViewById(R.id.seekBar);
seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
/**
* 拖动条停止拖动的时候调用
*/
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
Intent intent = new Intent(Constant.SEEKBAR_PAGE);
int pro = seekBar.getProgress();
intent.putExtra("pro", seekBar.getProgress());
ComicImageViewActivity.this.sendBroadcast(intent);
}
/**
* 拖动条开始拖动的时候调用
*/
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
/**
* 拖动条进度改变的时候调用
*/
@Override
public void onProgressChanged(SeekBar seekBar, int progress,
boolean fromUser) {
int pro = progress;
tv_tip_page.setText(pro+"/"+size);
}
});
}
public void setVpNumberListener(SeekbarImagePageCallback seekbarImagePageCallback)
{
this.seekbarImagePageCallback = seekbarImagePageCallback;
}
public Toolbar getToolbar()
{
if(toolbar!=null)
{
return toolbar;
}
return null;
}
public void hideToolbar()
{
if(toolbar!=null)
{
toolbar.setVisibility(View.GONE);
toolbar.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out));
}
}
public void showToolbar()
{
if(toolbar!=null)
{
toolbar.setVisibility(View.VISIBLE);
toolbar.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in));
}
}
public void hideBottomView()
{
if(bottom_view!=null)
{
bottom_view.setVisibility(View.GONE);
bottom_view.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_out_bottom));
}
}
public void showBottomView()
{
if(bottom_view!=null)
{
bottom_view.setVisibility(View.VISIBLE);
bottom_view.startAnimation(AnimationUtils.loadAnimation(this, R.anim.fade_in_bottom));
}
}
/**
* 显示toolbar和底部view
*/
public void showMenuView()
{
showToolbar();
showBottomView();
}
public void hideMenuView()
{
hideToolbar();
hideBottomView();
}
//
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.image, menu);
return true;
}
private Toolbar.OnMenuItemClickListener onMenuItemClick = new Toolbar.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem menuItem) {
String msg = "";
switch (menuItem.getItemId()) {
case R.id.action_favorite:
msg += "Click favorite";
break;
case R.id.action_share:
msg += "Click share";
shareApp();
break;
}
return true;
}
};
private void shareApp() {
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_SUBJECT,
"cjjtitle");
intent.putExtra(Intent.EXTRA_TEXT,
"cjjtext");
Intent chooser = Intent.createChooser(intent,
"银魂");
startActivity(chooser);
}
/**
* 分享图片
*/
protected void sharePic() {
ShareViewTask task = new ShareViewTask(this);
task.setChooserTitle("分享图片");
task.setExtraSubject("银魂'");
task.setExtraText("cjj");
task.setName("cjj2");
task.execute(ComicImageFragment.instance.getViewpager());
}
@Override
public void Size(int size) {
this.size = size;
seekBar.setMax(size);
tv_tip_page.setText("1/"+size);
}
@Override
public void currentPage(int page) {
if(page != size)
{
tv_tip_page.setText(page+1+"/"+size);
seekBar.setProgress(page+1);
}
}
}