package com.forfan.bigbang.component.activity; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; import android.os.Bundle; import android.support.v4.content.ContextCompat; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.Toolbar; import android.view.Gravity; import android.view.View; import android.view.ViewGroup; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.SeekBar; import android.widget.TextView; import com.flask.colorpicker.ColorPickerView; import com.flask.colorpicker.OnColorSelectedListener; import com.flask.colorpicker.builder.ColorPickerClickListener; import com.flask.colorpicker.builder.ColorPickerDialogBuilder; import com.forfan.bigbang.BigBangApp; import com.forfan.bigbang.R; import com.forfan.bigbang.baseCard.DividerItemDecoration; import com.forfan.bigbang.component.base.BaseActivity; import com.forfan.bigbang.cropper.CropFileUtils; import com.forfan.bigbang.cropper.CropHelper; import com.forfan.bigbang.cropper.handler.CropImage; import com.forfan.bigbang.cropper.handler.CropImageView; import com.forfan.bigbang.util.ArcTipViewController; import com.forfan.bigbang.util.ConstantUtil; import com.forfan.bigbang.util.IOUtil; import com.forfan.bigbang.util.UrlCountUtil; import com.forfan.bigbang.util.ViewUtil; import com.shang.commonjar.contentProvider.SPHelper; import com.shang.utils.StatusBarCompat; import java.io.File; /** * Created by penglu on 2016/11/9. */ public class SettingFloatViewActivity extends BaseActivity { private static final int BIGBANG_BACKGROUND_COLOR_ARRAY_RES = R.array.bigbang_background_color; private static final int MIN_ITEM_PADDING = 50; private static final int MAX_ITEM_PADDING = 150; private static final int ALPHA_MIN = 20; private static final int ALPHA_MAX = 100; private SeekBar mItemPaddingSeekBar; private TextView itemPadding; private TextView bigbangAlpha; private SeekBar mBigbangAlphaSeekBar; private View delPic; private CheckBox isStickView; private RecyclerView backgroundRV; private int[] bigbangBackgroungColors; private int lastPickedColor;//只存rgb private int alpha;//只存alpha,0-100 public static String FLOATVIEW_IMAGE_PATH = BigBangApp.getInstance().getFilesDir()+ File.separator + "floatview.png"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_setting_floatview); StatusBarCompat.setupStatusBarView(this, (ViewGroup) getWindow().getDecorView(), true, R.color.colorPrimary); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportActionBar().setTitle(R.string.setting_floatview); mItemPaddingSeekBar = (SeekBar) findViewById(R.id.set_item_padding); mBigbangAlphaSeekBar = (SeekBar) findViewById(R.id.set_bigbang_alpha); itemPadding = (TextView) findViewById(R.id.item_padding); bigbangAlpha = (TextView) findViewById(R.id.bigbang_alpha); backgroundRV = (RecyclerView) findViewById(R.id.bigbang_background); isStickView = (CheckBox) findViewById(R.id.is_stick_view); mItemPaddingSeekBar.setMax(MAX_ITEM_PADDING - MIN_ITEM_PADDING); mBigbangAlphaSeekBar.setMax(ALPHA_MAX -ALPHA_MIN); mItemPaddingSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int value = (int) (MIN_ITEM_PADDING + progress); //mBigBangLayout.setTextPadding(value); itemPadding.setText(getString(R.string.setting_floatview_size) + value); SPHelper.save(ConstantUtil.FLOATVIEW_SIZE, (float)value); UrlCountUtil.onEvent(UrlCountUtil.STATUS_FLOATVIEW_SET_SIZE, value + ""); ArcTipViewController.getInstance().showForSettings(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); mBigbangAlphaSeekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() { @Override public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) { int value = progress + ALPHA_MIN ; // mBigBangLayoutWrap.setBackgroundColorWithAlpha(lastPickedColor,value); // cardView.setCardBackgroundColor(Color.argb((int) ((alpha / 100.0f) * 255), Color.red(lastPickedColor), Color.green(lastPickedColor), Color.blue(lastPickedColor))); bigbangAlpha.setText(getString(R.string.setting_floatview_alpha_percent) + value + "%"); SPHelper.save(ConstantUtil.FLOATVIEW_ALPHA, value); alpha = value; UrlCountUtil.onEvent(UrlCountUtil.STATUS_FLOATVIEW_SET_ALPHA, value + ""); ArcTipViewController.getInstance().showForSettings(); } @Override public void onStartTrackingTouch(SeekBar seekBar) { } @Override public void onStopTrackingTouch(SeekBar seekBar) { } }); delPic=findViewById(R.id.del_pic); delPic.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { IOUtil.delete(FLOATVIEW_IMAGE_PATH); ArcTipViewController.getInstance().showForSettings(); refresh(); } }); findViewById(R.id.select_pic).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_PICK); intent.setType("image/*"); startActivityForResult(intent, CropHelper.REQUEST_CROP); } }); isStickView.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { SPHelper.save(ConstantUtil.FLOATVIEW_IS_STICK,isChecked); UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_FLOATVIEW_IS_STICK, isChecked + ""); ArcTipViewController.getInstance().showForSettings(); } }); int padding = (int) SPHelper.getFloat(ConstantUtil.FLOATVIEW_SIZE, 100.0f); alpha = SPHelper.getInt(ConstantUtil.FLOATVIEW_ALPHA, 70); lastPickedColor = SPHelper.getInt(ConstantUtil.FLOATVIEW_DIY_BG_COLOR, Color.parseColor("#94a4bb")); boolean isStick=SPHelper.getBoolean(ConstantUtil.FLOATVIEW_IS_STICK,false); isStickView.setChecked(isStick); mItemPaddingSeekBar.setProgress((int) ((MIN_ITEM_PADDING))); mItemPaddingSeekBar.setProgress((int) ((MAX_ITEM_PADDING- MIN_ITEM_PADDING))); mItemPaddingSeekBar.setProgress((int) ((padding - MIN_ITEM_PADDING))); bigbangAlpha.setText(getString(R.string.setting_floatview_alpha_percent) + alpha + "%"); mBigbangAlphaSeekBar.setProgress(alpha-ALPHA_MIN); applyColor(lastPickedColor); bigbangBackgroungColors = getResources().getIntArray(BIGBANG_BACKGROUND_COLOR_ARRAY_RES); backgroundRV.setLayoutManager(new GridLayoutManager(this, 4)); backgroundRV.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.GRID_LIST)); backgroundRV.setAdapter(backgroundColorAdapter); refresh(); } private RecyclerView.Adapter backgroundColorAdapter = new RecyclerView.Adapter() { @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { return new ColorVIewHolder(new TextView(SettingFloatViewActivity.this)); } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { TextView view = (TextView) holder.itemView; view.setMinimumHeight((int) ViewUtil.dp2px(40)); if (position == bigbangBackgroungColors.length) { view.setBackgroundColor(getResources().getColor(R.color.white)); view.setText(R.string.set_background_myself); view.setTextColor(getResources().getColor(R.color.black)); view.setTextSize(14); view.setGravity(Gravity.CENTER); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { showColorPickDialog(); UrlCountUtil.onEvent(UrlCountUtil.CLICK_SET_BB_BGCOLOR_DIY); } }); } else { view.setText(""); view.setBackgroundColor(bigbangBackgroungColors[position]); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (bigbangBackgroungColors.length > position) { applyColor(bigbangBackgroungColors[position]); lastPickedColor = bigbangBackgroungColors[position]; SPHelper.save(ConstantUtil.FLOATVIEW_DIY_BG_COLOR, bigbangBackgroungColors[position]); UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_FLOATVIEW_BGCOLOR, lastPickedColor + ""); ArcTipViewController.getInstance().showForSettings(); } } }); } } @Override public int getItemCount() { return bigbangBackgroungColors.length + 1; } class ColorVIewHolder extends RecyclerView.ViewHolder { public ColorVIewHolder(View itemView) { super(itemView); } } }; private void applyColor(int color) { } private void applyColor(int color, int alpha) { } private void showColorPickDialog() { ColorPickerDialogBuilder .with(this) .setTitle(R.string.set_background_myself) .initialColor(lastPickedColor) .wheelType(ColorPickerView.WHEEL_TYPE.FLOWER) .density(12) .setOnColorSelectedListener(new OnColorSelectedListener() { @Override public void onColorSelected(int selectedColor) { applyColor(Color.rgb(Color.red(selectedColor), Color.green(selectedColor), Color.blue(selectedColor)), (int) (Color.alpha(selectedColor) * 100.0 / 255)); } }) .setPositiveButton(R.string.confirm, new ColorPickerClickListener() { @Override public void onClick(DialogInterface dialog, int selectedColor, Integer[] allColors) { lastPickedColor = Color.rgb(Color.red(selectedColor), Color.green(selectedColor), Color.blue(selectedColor)); alpha = (int) (Color.alpha(selectedColor) * 100.0 / 255); applyColor(Color.rgb(Color.red(selectedColor), Color.green(selectedColor), Color.blue(selectedColor))); // SPHelper.save(ConstantUtil.BIGBANG_DIY_BG_COLOR, lastPickedColor); // UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_BB_BGCOLOR, lastPickedColor + ""); SPHelper.save(ConstantUtil.FLOATVIEW_DIY_BG_COLOR, lastPickedColor); UrlCountUtil.onEvent(UrlCountUtil.STATUS_SET_FLOATVIEW_BGCOLOR, lastPickedColor + ""); mBigbangAlphaSeekBar.setProgress(alpha); ArcTipViewController.getInstance().showForSettings(); } }) .setNegativeButton(R.string.cancel, new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { applyColor(lastPickedColor); } }) .showColorEdit(true) .setColorEditTextColor(ContextCompat.getColor(this, android.R.color.holo_blue_bright)) .build() .show(); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CropImage.CROP_IMAGE_ACTIVITY_REQUEST_CODE && resultCode == -1) { CropImage.ActivityResult result = data.getExtras().getParcelable(CropImage.CROP_IMAGE_EXTRA_RESULT); CropFileUtils.copyRoundImageFile(result.getUri().getPath(),FLOATVIEW_IMAGE_PATH); ArcTipViewController.getInstance().showForSettings(); refresh(); } else if (requestCode == CropHelper.REQUEST_CROP && resultCode == -1) { if (data.getData() != null) { CropImage.activity(data.getData()) .setCropShape(CropImageView.CropShape.OVAL) .setFixAspectRatio(true) .setMultiTouchEnabled(true) .start(SettingFloatViewActivity.this); } // CropHelper.handleResult(this, requestCode, resultCode, data); } } private void refresh(){ if (new File(FLOATVIEW_IMAGE_PATH).exists()){ delPic.setVisibility(View.VISIBLE); }else { delPic.setVisibility(View.GONE); } } }