Android随笔记(持续更新)

接口回调进行传值——CallBack应用举例

将数据以接口的形式外露

public class interface_class {

  int aaa=3652;
 int getdata(CALL call){
 call.get_in(aaa);
 return 1;
 }

}
interface CALL {
void get_in(int abc);
}

看代码:

public class callbacttest {
        public static void main(String[] args) {
        int x=  new interface_class().getdata(new CALL() {

                @Override
                public void get_in(int bbbb) {
                    System.out.println(bbbb);

                }
            });
        System.out.println(x);
        }
}

结果:

3652

1


Toast优化

(解决因Toast的队列显示问题)

import android.content.Context;
import android.widget.Toast;

/**
 * Created by Administrator on 2016/9/11.
 */
public class Utils {
private static Toast mToast;

public static void showToast(Context context, String msg, int duration) {
    if (mToast == null) {
        mToast = Toast.makeText(context, msg, duration);
    } else {
        mToast.setText(msg);
    }
    mToast.show();
}
}

popupWindow外部的事件就可以传递给下面的Activity

那么,如果我想要一个效果,点击外部区域,弹窗不消失,但是点击事件会向下面的activity传递,比如下面是一个WebView,我想点击里面的链接等.

  研究了半天,说是要给Window设置一个Flag,

  WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL

  看了源码,这个Flag的设置与否是由一个叫mNotTouchModal的字段控制,但是设置该字段的set方法被标记为@hide。

  所以要通过反射的方法调用:
复制代码

method = PopupWindow.class.getDeclaredMethod("setTouchModal",
boolean.class);
method.setAccessible(true);
method.invoke(popupWindow, touchModal);

}
catch (Exception e) {
e.printStackTrace();
}

}

复制代码,然后在程序中:  

UIUtils.setPopupWindowTouchModal(popupWindow, false);

  该popupWindow外部的事件就可以传递给下面的Activity了。

切换后将EditText光标置于末尾

            charSequence = etdatelimit.getText();
            if (charSequence instanceof Spannable) {
                Spannable spanText = (Spannable) charSequence;
                Selection.setSelection(spanText, charSequence.length());
            }

文件上传

/**
     * @param path 要上传的文件路径
     * @throws Exception
     */
public void uploadFile(String path) throws Exception {
    String url = "http://116.255.193.42:8080/Handler.ashx";
    File file = new File(path);
    if (file.exists() && file.length() > 0) {
        AsyncHttpClient client = new AsyncHttpClient();
        com.loopj.android.http.RequestParams requestParams = new com.loopj.android.http.RequestParams();

        requestParams.put("uploadfile", file);
        // 上传文件
        client.post(url, requestParams, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers,
                                  byte[] responseBody) {
                // 上传成功后要做的工作
                Toast.makeText(ImageDetailActivity.this, "上传成功", Toast.LENGTH_LONG).show();
//                    progress.setProgress(0);
            }

            @Override
            public void onFailure(int statusCode, Header[] headers,
                                  byte[] responseBody, Throwable error) {
                // 上传失败后要做到工作
                Toast.makeText(ImageDetailActivity.this, "上传失败", Toast.LENGTH_LONG).show();
            }


            @Override
            public void onRetry(int retryNo) {
                // TODO Auto-generated method stub
                super.onRetry(retryNo);
                // 返回重试次数
            }

            @Override
            public void onProgress(long bytesWritten, long totalSize) {
                super.onProgress(bytesWritten, totalSize);
                int count = (int) ((bytesWritten * 1.0 / totalSize) * 100);
                // 上传进度显示
                Log.e("上传 Progress>>>>>", bytesWritten + " / " + totalSize);
            }
        });
    } else {
        Toast.makeText(ImageDetailActivity.this, "文件不存在", Toast.LENGTH_LONG).show();
    }
}

监听屏幕旋转状态

/**
 * 屏幕旋转时调用此方法
 */
 @Override
 public void onConfigurationChanged(Configuration newConfig) {
 super.onConfigurationChanged(newConfig);
 if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {
//            Toast.makeText(MainActivity.this, "现在是竖屏", Toast.LENGTH_SHORT).show();
 fl_bottom_menu.setVisibility(View.VISIBLE);
 }
 if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
//            Toast.makeText(MainActivity.this, "现在是横屏", Toast.LENGTH_SHORT).show();
 fl_bottom_menu.setVisibility(View.GONE);
 }


 }

点击监听接口

public class HBDialogRead {
private Dialog dialog;
private Context context;
private OnOKClickListener okClickListener;

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


public void showDialog(String coin) {

    dialog = new Dialog(context, R.style.my_hb_dialog);
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);//去掉自定义对话框的tiltle
    dialog.setContentView(R.layout.hb_dialog_read);//设置自定义Dialog视图布局
    Window window = dialog.getWindow();
    window.setGravity(Gravity.CENTER);
    dialog.show();
    TextView tv_coin = (TextView) dialog.findViewById(R.id.tv_coin);
    Button bt_ok = (Button) dialog.findViewById(R.id.bt_ok);
    ImageView iv_close = (ImageView) dialog.findViewById(R.id.iv_close);
    tv_coin.setText(coin + "");
    bt_ok.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (okClickListener != null) {
                okClickListener.onOKClick();
            }
            dialog.dismiss();

        }
    });
    iv_close.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            dialog.dismiss();
        }
    });
}

public void setOnOKClickListener(OnOKClickListener okClickListener) {
    this.okClickListener = okClickListener;
}

public interface OnOKClickListener {
    void onOKClick();
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值