频道管理的条目点击弹出的dialog使用

来源:互联网 发布:c语言中的贪心算法 编辑:程序博客网 时间:2024/06/05 16:14
package com.bwie.cyrus.april;import android.app.ProgressDialog;import android.content.ComponentName;import android.content.DialogInterface;import android.content.Intent;import android.graphics.Bitmap;import android.net.Uri;import android.os.Environment;import android.os.Handler;import android.renderscript.Type;import android.support.v7.app.AlertDialog;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.util.Log;import android.view.LayoutInflater;import android.view.View;import android.view.ViewGroup;import android.view.animation.Animation;import android.view.animation.AnimationSet;import android.view.animation.TranslateAnimation;import android.widget.AdapterView;import android.widget.CompoundButton;import android.widget.GridView;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.RadioButton;import android.widget.TextView;import android.widget.Toast;import com.bwie.cyrus.april.VersionUpdate.MessageBean;import com.bwie.cyrus.april.VersionUpdate.Version;import com.bwie.cyrus.april.VersionUpdate.VersionUtil;import com.google.gson.Gson;import com.google.gson.reflect.TypeToken;import org.xutils.common.Callback;import org.xutils.http.RequestParams;import org.xutils.x;import java.io.File;import java.util.ArrayList;import java.util.List;import static android.R.attr.type;public class MainActivity extends AppCompatActivity implements AdapterView.OnItemClickListener, AdapterView.OnItemLongClickListener {    private MyGridView mUserGv, mOtherGv;    private List<String> mUserList = new ArrayList<>();    private List<String> mOtherList = new ArrayList<>();    private OtherAdapter mUserAdapter, mOtherAdapter;    private AlertDialog dialog;    private Intent intent;    private String url = "http://172.18.47.66/checkversion.php";    // 文件保存地址    private String targetPath = "";    private static final String TAG = "MainActivity";    private ProgressDialog progressDialog;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        initView();        if (Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)) {            File file = Environment.getExternalStorageDirectory();            targetPath = file.getAbsolutePath() + File.separator;        }        progressDialog = new ProgressDialog(this);        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);    }    public void initView() {        mUserGv = (MyGridView) findViewById(R.id.userGridView);        mOtherGv = (MyGridView) findViewById(R.id.otherGridView);        mUserList.add("推荐");        mUserList.add("热点");        mUserList.add("上海");        mUserList.add("时尚");        mUserList.add("科技");        mUserList.add("体育");        mUserList.add("军事");        mUserList.add("财经");        mUserList.add("网络");        mOtherList.add("汽车");        mOtherList.add("房产");        mOtherList.add("社会");        mOtherList.add("情感");        mOtherList.add("女人");        mOtherList.add("旅游");        mOtherList.add("健康");        mOtherList.add("美女");        mOtherList.add("游戏");        mOtherList.add("数码");        mOtherList.add("娱乐");        mOtherList.add("探索");        mUserAdapter = new OtherAdapter(this, mUserList, true);        mOtherAdapter = new OtherAdapter(this, mOtherList, false);        mUserGv.setAdapter(mUserAdapter);        mOtherGv.setAdapter(mOtherAdapter);        mUserGv.setOnItemClickListener(this);        mOtherGv.setOnItemClickListener(this);        mUserGv.setOnItemLongClickListener(this);        mOtherGv.setOnItemLongClickListener(this);    }    /**     * 获取点击的Item的对应View,     * 因为点击的Item已经有了自己归属的父容器MyGridView,所有我们要是有一个ImageView来代替Item移动     *     * @param view     * @return     */    private ImageView getView(View view) {        view.destroyDrawingCache();        view.setDrawingCacheEnabled(true);        Bitmap cache = Bitmap.createBitmap(view.getDrawingCache());        view.setDrawingCacheEnabled(false);        ImageView iv = new ImageView(this);        iv.setImageBitmap(cache);        return iv;    }    /**     * 获取移动的VIEW,放入对应ViewGroup布局容器     *     * @param viewGroup     * @param view     * @param initLocation     * @return     */    private View getMoveView(ViewGroup viewGroup, View view, int[] initLocation) {        int x = initLocation[0];        int y = initLocation[1];        viewGroup.addView(view);        LinearLayout.LayoutParams mLayoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT);        mLayoutParams.leftMargin = x;        mLayoutParams.topMargin = y;        view.setLayoutParams(mLayoutParams);        return view;    }    /**     * 创建移动的ITEM对应的ViewGroup布局容器     * 用于存放我们移动的View     */    private ViewGroup getMoveViewGroup() {        //window中最顶层的view        ViewGroup moveViewGroup = (ViewGroup) getWindow().getDecorView();        LinearLayout moveLinearLayout = new LinearLayout(this);        moveLinearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));        moveViewGroup.addView(moveLinearLayout);        return moveLinearLayout;    }    /**     * 点击ITEM移动动画     *     * @param moveView     * @param startLocation     * @param endLocation     * @param moveChannel     * @param clickGridView     */    private void MoveAnim(View moveView, int[] startLocation, int[] endLocation, final String moveChannel,                          final GridView clickGridView, final boolean isUser) {        int[] initLocation = new int[2];        //获取传递过来的VIEW的坐标        moveView.getLocationInWindow(initLocation);        //得到要移动的VIEW,并放入对应的容器中        final ViewGroup moveViewGroup = getMoveViewGroup();        final View mMoveView = getMoveView(moveViewGroup, moveView, initLocation);        //创建移动动画        TranslateAnimation moveAnimation = new TranslateAnimation(                startLocation[0], endLocation[0], startLocation[1],                endLocation[1]);//        moveAnimation.setDuration(300L);//动画时间        //动画配置        AnimationSet moveAnimationSet = new AnimationSet(true);        moveAnimationSet.setFillAfter(false);//动画效果执行完毕后,View对象不保留在终止的位置        moveAnimationSet.addAnimation(moveAnimation);        mMoveView.startAnimation(moveAnimationSet);        moveAnimationSet.setAnimationListener(new Animation.AnimationListener() {            @Override            public void onAnimationStart(Animation animation) {            }            @Override            public void onAnimationRepeat(Animation animation) {            }            @Override            public void onAnimationEnd(Animation animation) {                moveViewGroup.removeView(mMoveView);                // 判断点击的是DragGrid还是OtherGridView                if (isUser) {                    mOtherAdapter.setVisible(true);                    mOtherAdapter.notifyDataSetChanged();                    mUserAdapter.remove();                } else {                    mUserAdapter.setVisible(true);                    mUserAdapter.notifyDataSetChanged();                    mOtherAdapter.remove();                }            }        });    }    @Override    public void onItemClick(AdapterView<?> parent, View view, final int position, long id) {        switch (parent.getId()) {            case R.id.userGridView:                //position为 0,1 的不可以进行任何操作                if (position != 0 && position != 1) {                    final ImageView moveImageView = getView(view);                    if (moveImageView != null) {                        TextView newTextView = (TextView) view.findViewById(R.id.grid_tv);                        final int[] startLocation = new int[2];                        newTextView.getLocationInWindow(startLocation);                        final String channel = ((OtherAdapter) parent.getAdapter()).getItem(position);//获取点击的频道内容                        mOtherAdapter.setVisible(false);                        //添加到最后一个                        mOtherAdapter.addItem(channel);                        new Handler().postDelayed(new Runnable() {                            public void run() {                                try {                                    int[] endLocation = new int[2];                                    //获取终点的坐标                                    mOtherGv.getChildAt(mOtherGv.getLastVisiblePosition()).getLocationInWindow(endLocation);                                    MoveAnim(moveImageView, startLocation, endLocation, channel, mUserGv, true);                                    mUserAdapter.setRemove(position);                                } catch (Exception localException) {                                }                            }                        }, 50L);                    }                }                break;            case R.id.otherGridView:                final ImageView moveImageView = getView(view);                if (moveImageView != null) {                    TextView newTextView = (TextView) view.findViewById(R.id.grid_tv);                    final int[] startLocation = new int[2];                    newTextView.getLocationInWindow(startLocation);                    final String channel = ((OtherAdapter) parent.getAdapter()).getItem(position);                    mUserAdapter.setVisible(false);                    //添加到最后一个                    mUserAdapter.addItem(channel);                    new Handler().postDelayed(new Runnable() {                        public void run() {                            try {                                int[] endLocation = new int[2];                                //获取终点的坐标                                mUserGv.getChildAt(mUserGv.getLastVisiblePosition()).getLocationInWindow(endLocation);                                MoveAnim(moveImageView, startLocation, endLocation, channel, mOtherGv, false);                                mOtherAdapter.setRemove(position);                            } catch (Exception localException) {                            }                        }                    }, 50L);                }                break;            default:                break;        }    }    @Override    public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {        switch (parent.getId()) {            case R.id.userGridView:                View layout = View.inflate(MainActivity.this, R.layout.dialog, null);                RadioButton wifi = (RadioButton) layout.findViewById(R.id.wifi);                RadioButton phone = (RadioButton) layout.findViewById(R.id.liu);                dialog = new AlertDialog.Builder(this).setIcon(R.mipmap.ic_launcher).setTitle("网络选择").setView(layout)                        .setCancelable(false).show();                wifi.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {                    @Override                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                        checkVerson();                        dialog.cancel();                    }                });                phone.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {                    @Override                    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {                       //当点击流量的时候会掉系统自带的自动的wifi                         if (android.os.Build.VERSION.SDK_INT > 10) {                            intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);                        } else {                            intent = new Intent();                            ComponentName component = new ComponentName("com.android.settings", "com.android.settings.WirelessSettings");                            intent.setComponent(component);                            intent.setAction("android.intent.action.VIEW");                        }                        startActivity(intent);                        dialog.cancel();                    }                });                break;            case R.id.otherGridView:                break;        }        return false;    }    private void checkVerson() {        int versionCode = VersionUtil.getVersionCode(this);        RequestParams params = new RequestParams(url);        params.addQueryStringParameter("version", String.valueOf(versionCode));        x.http().get(params, new Callback.CommonCallback<String>() {            @Override            public void onSuccess(String result) {                Gson gson = new Gson();                java.lang.reflect.Type type = new TypeToken<MessageBean<Version>>() {                }.getType();                MessageBean<Version> messageBean = gson.fromJson(result, type);                if (messageBean.isSuccess()) {                    final Version version = messageBean.getResult();                    // 有更新                    if (version.isHasNewVersion()) {                        // 强制更新                        if (version.isMustUpdate()) {                            new AlertDialog.Builder(MainActivity.this)                                    .setTitle("版本更新")                                    .setMessage("升级到最新版本")                                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {                                        @Override                                        public void onClick(DialogInterface dialog, int which) {                                            updateVersion(version.getUrl());                                            dialog.dismiss();                                        }                                    })                                    // 不可取消                                    .setCancelable(false)                                    .create().show();                        } else {                            // 选择更新                            new AlertDialog.Builder(MainActivity.this)                                    .setTitle("版本更新")                                    .setMessage("是否要升级到最新版本")                                    .setPositiveButton("确定", new DialogInterface.OnClickListener() {                                        @Override                                        public void onClick(DialogInterface dialog, int which) {                                            updateVersion(version.getUrl());                                            dialog.dismiss();                                        }                                    }) // 不可取消                                    .setCancelable(false)                                    .create().show();                        }                    } else {                        // 无可用更新                        Toast.makeText(MainActivity.this, "当前已经是最新版本", Toast.LENGTH_SHORT).show();                    }                }            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {                Log.e(TAG, "onError: " + ex.getMessage());            }            @Override            public void onCancelled(Callback.CancelledException cex) {            }            @Override            public void onFinished() {            }        });    }    /**     * 版本更新     *     * @param url     */    private void updateVersion(String url) {        targetPath = targetPath + System.currentTimeMillis() + ".apk";        RequestParams params = new RequestParams(url);        // 设置下载保存路径        params.setSaveFilePath(targetPath);        // xutils的文件下载        x.http().get(params, new Callback.ProgressCallback<File>() {            @Override            public void onSuccess(File result) {                if (progressDialog.isShowing()) {                    progressDialog.dismiss();                }                installApk(result);            }            @Override            public void onError(Throwable ex, boolean isOnCallback) {                if (progressDialog.isShowing()) {                    progressDialog.dismiss();                }                Toast.makeText(MainActivity.this, "下载失败", Toast.LENGTH_SHORT).show();            }            @Override            public void onCancelled(CancelledException cex) {            }            @Override            public void onFinished() {            }            @Override            public void onWaiting() {            }            @Override            public void onStarted() {            }            @Override            public void onLoading(long total, long current, boolean isDownloading) {                if (isDownloading) {                    progressDialog.setMessage("正在下载...");                    progressDialog.show();                    progressDialog.setMax((int) total);                    progressDialog.setProgress((int) current);                }            }        });    }    /**     * 安装apk     *     * @param file     */    private void installApk(File file) {        Intent intent = new Intent();        intent.setAction(Intent.ACTION_VIEW);        intent.addCategory("android.intent.category.DEFAULT");        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);        intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");        startActivity(intent);        android.os.Process.killProcess(android.os.Process.myPid());    }}
原创粉丝点击