dialog 的 setCanceledOnTouchOutside 方法设置

layout xml 文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/RelativeLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <ListView
        android:id="@+id/action_bar_item_list"
        android:layout_above="@+id/mybutton"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" >
    </ListView>
    <Button
        android:id="@+id/mybutton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:text="Button" />
    <LinearLayout
        android:id="@+id/messagelayout"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:orientation="vertical" >
        <TextView
            android:id="@+id/message"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="Large Text"
            android:textAppearance="?android:attr/textAppearanceLarge" />
    </LinearLayout>
</RelativeLayout>

如果点击 mybutton, messagelayout 就会设置为可见。
然而当 messagelayout 可见时,我想创建一个函数如一个对话框的 setCanceledOnTouchOutside,然而当用户在 messagelayout 边触屏时,就会设置messagelayout 消失。如果我不使用一个 dialog,如何实现呢?

1个回答

那就用PopupWindow吧 效果和dialog差不多 也能点击外部取消

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
android 关于dialog的问题
我在BaseActivity中,写了一个方法,定时返回登录页面,会有一个弹出对话框,点击确定后,返回登录页面 MainActivity继承BaseActivity,结果在返回的时候,有时候会出现这种情况,点击确定 返回登录页面后,这时候再登录进来,结果之前的对话框还在,需要再次返回,才不会出现,求各位大神帮忙解答 dialog = new AlertDialog.Builder(BaseActivity.this). setTitle("登录超时"). setMessage("请返回重新登录!"). // setView(view) setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface arg0, int which) { dialog.dismiss(); Intent it = new Intent(BaseActivity.this, LoginActivity.class); BaseActivity.this.startActivity(it); // System.exit(0); } }).create(); dialog.show(); dialog.setCanceledOnTouchOutside(false);
点击textview,调用showDialog方法弹出对话框,再点击textview,对话框消失,怎么实现啊?
//showDialog()方法 private void showDailog() { //R.style.***一定要写,不然不能充满整个屏宽,引用R.style.AppTheme就可以 View view = View.inflate(this, R.layout.dialog, null); Window window = dialog.getWindow(); window.setGravity(Gravity.BOTTOM); //设置dialog弹出时的动画效果,从屏幕底部向上弹出 dialog.setCanceledOnTouchOutside(true); dialog.show(); window.setContentView(view); WindowManager.LayoutParams params = window.getAttributes(); //设置窗口宽度为充满全屏 params.width = WindowManager.LayoutParams.MATCH_PARENT;//如果不设置,可能部分机型出现左右有空隙,也就是产生margin的感觉 //设置窗口高度为包裹内容 params.height = WindowManager.LayoutParams.WRAP_CONTENT; params.flags = WindowManager.LayoutParams.DIM_AMOUNT_CHANGED;//就是这个属性导致window后所有的东西都成暗淡 params.dimAmount = 1.0f;//设置对话框的透明程度背景 //将设置好的属性set回去 window.setAttributes(params); }
Android dialog上动画的问题
Activity上有ListView,点击ListView的Item会弹出dialog,点击dialog上的+号演示一个小球从+号飞到Activity底部的购物车的动画,想了好几天无法实现这个动画,要么这个动画是在dialog的后面,要么这个动画只能在dialog的范围内,求大神赐教!谢谢!! 下面贴我的代码 ``` public class MainActivity extends Activity implements OnClickListener { private Button bt; private TextView cart; private Button add; private ImageView photoImageView; private Dialog selectDialog; private int[] foodAddLocation = new int[2]; private int[] cartLocation = new int[2]; private ViewGroup animLayout;//动画层 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); bt = (Button) findViewById(R.id.bt); bt.setOnClickListener(this); cart = (TextView) findViewById(R.id.cart); } public void showSelectDialog() { View view = LayoutInflater.from(this).inflate(R.layout.dialog_view, null); ImageView close = (ImageView)view.findViewById(R.id.select_close); close.setOnClickListener(this); add = (Button)view.findViewById(R.id.add);//TODO add.setOnClickListener(this); TextView nameView = (TextView)view.findViewById(R.id.food_name); nameView.setText("哈哈哈"); photoImageView = (ImageView)view.findViewById(R.id.photo); photoImageView.setImageResource(R.drawable.ic_food_none); selectDialog = new Dialog(this, R.style.transparentFrameWindowStyle); selectDialog.setContentView(view, new LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT)); Window window = selectDialog.getWindow(); WindowManager windowManager = this.getWindowManager(); // 设置显示动画 WindowManager.LayoutParams wl = window.getAttributes(); wl.x = 0; wl.y = 0; // 设置显示位置 selectDialog.onWindowAttributesChanged(wl); Display display = windowManager.getDefaultDisplay(); WindowManager.LayoutParams lp = window.getAttributes(); lp.width = (int)(display.getWidth()*0.8); //设置宽度 selectDialog.getWindow().setAttributes(lp); // 设置点击外围关闭 selectDialog.setCanceledOnTouchOutside(true); selectDialog.show(); } private void addToCartAnimation(final ImageView ball, boolean isDialog) { animLayout = null; animLayout = createAnimLayout(isDialog); final View view = addViewToAnimLayout(animLayout, ball, foodAddLocation); cart.getLocationInWindow(cartLocation); // 计算位移 int endX = 0 - foodAddLocation[0] + cart.getWidth(); int endY = cartLocation[1] - foodAddLocation[1] - cart.getHeight()*3; TranslateAnimation translateAnimationX = new TranslateAnimation(-cart.getHeight(), endX+cart.getHeight(), 0, 0); translateAnimationX.setInterpolator(new LinearInterpolator()); translateAnimationX.setRepeatCount(0); translateAnimationX.setFillAfter(true); TranslateAnimation translateAnimationY = new TranslateAnimation(0, 0, -cart.getHeight()*3, endY-cart.getHeight()); translateAnimationY.setInterpolator(new AccelerateInterpolator()); translateAnimationY.setRepeatCount(0); translateAnimationY.setFillAfter(true); AnimationSet set = new AnimationSet(false); set.setFillAfter(false); set.addAnimation(translateAnimationY); set.addAnimation(translateAnimationX); set.setDuration(300); view.startAnimation(set); set.setAnimationListener(new AnimationListener() { @Override public void onAnimationStart(Animation animation) { ball.setVisibility(View.VISIBLE); } @Override public void onAnimationRepeat(Animation animation) { } @Override public void onAnimationEnd(Animation animation) { ball.setVisibility(View.GONE); } }); } private ViewGroup createAnimLayout(boolean isDialog) { Window window; if(isDialog){ window = selectDialog.getWindow(); }else{ window = this.getWindow(); } ViewGroup rootView = (ViewGroup) window.getDecorView(); LinearLayout animLayout = new LinearLayout(this); LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT); animLayout.setLayoutParams(lp); animLayout.setId(Integer.MAX_VALUE); animLayout.setBackgroundResource(android.R.color.transparent); rootView.addView(animLayout); return animLayout; } private View addViewToAnimLayout(final ViewGroup animLayout, final View ball, int[] foodAddLocation) { int x = foodAddLocation[0]; int y = foodAddLocation[1]; LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams( LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); lp.leftMargin = x; lp.topMargin = y; ball.setLayoutParams(lp); animLayout.addView(ball); return ball; } @Override public void onClick(View v) { switch(v.getId()){ case R.id.bt: showSelectDialog(); break; case R.id.add: add.getLocationInWindow(foodAddLocation); ImageView ball = new ImageView(this); ball.setImageResource(R.drawable.badge_ifaux); addToCartAnimation(ball, true); break; default: break; } } } ```
在Android 4.0连接HttpURLConnection失败
我使用以下代码从网络上获取changelog。 InputStream content = null; try { URL url = new URL("http://dreamhawk.blinkenshell.org/changelog.txt"); HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection(); urlConnection.setRequestMethod("GET"); urlConnection.connect(); content = urlConnection.getInputStream(); BufferedReader r = new BufferedReader(new InputStreamReader(content)); StringBuilder total = new StringBuilder(); String line; String NL = System.getProperty("line.separator"); try { while ((line = r.readLine()) != null) { total.append(line + NL); } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } String page = total.toString(); Dialog dialog = new Dialog(Main.this); dialog.setContentView(R.layout.custom_dialog); dialog.setTitle(R.string.changelog); dialog.setCanceledOnTouchOutside(true); TextView text = (TextView) dialog.findViewById(R.id.text); text.setTextSize(13); text.setText(page); dialog.show(); } catch (Exception e) { //handle the exception ! } 在Android 2.3或以下版本可以正常运行。但是只要ICS更新,就没有dialog,没有response,什么都没有,怎么改变代码?求教。
android中怎么动态更新dialog中的textview
![图片说明](https://img-ask.csdn.net/upload/201606/22/1466582326_507112.png) 如图 我想更新dialog中这个下载网速和百分比 需要不断更新 代码如下: View convertView = LayoutInflater.from( context).inflate( R.layout.download_dialog, null); ((TextView) convertView .findViewById(R.id.title_tv)) .setText(R.string.text_downloading); speed = ((TextView) convertView .findViewById(R.id.tv_speed)); percent = ((TextView) convertView.findViewById(R.id.tv_pencent)); progressBar = ((ProgressBar) convertView.findViewById(R.id.progressBar)); progressBar.setMax(100); Builder builder = new AlertDialog.Builder( context); m_progressDlg = builder.create(); m_progressDlg.show(); m_progressDlg.setContentView(convertView); m_progressDlg.setCancelable(false); m_progressDlg.setCanceledOnTouchOutside(false);
Android Studio将含有Activity的Library打包成Jar包后,为什么R文件报错
打包前的代码: ``` @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.loading_dialog); Context context = mContextWeakRef.get(); if (context == null) { return; } someAnimation = (AnimationDrawable) context.getResources().getDrawable(R.drawable.loading_dialog); mCusProImg = (ImageView) findViewById(R.id.cus_pro); Log.e("LoadingDialogView", mCusProImg + ""); mCusProImg.setImageDrawable(someAnimation); initView(); Thread t = new Thread(new UpdataThread()); t.start(); setCanceledOnTouchOutside(outside); } ``` 打包后的代码: ``` protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); this.setContentView(layout.loading_dialog); Context context = (Context)this.mContextWeakRef.get(); if(context != null) { this.someAnimation = (AnimationDrawable)context.getResources().getDrawable(drawable.loading_dialog); this.mCusProImg = (ImageView)this.findViewById(id.cus_pro); Log.e("LoadingDialogView", this.mCusProImg + ""); this.mCusProImg.setImageDrawable(this.someAnimation); this.initView(); Thread t = new Thread(new LoadingDialogView.UpdataThread(null)); t.start(); this.setCanceledOnTouchOutside(this.outside); } } ```
出现内存溢出 请大神帮瞧瞧
CoordinatorLayout+NestedScrollView+RecyclerView 加载更多 我使用 NestedScrollView加载更多 出现内存溢出 请大神帮瞧瞧 nsv.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) { View view = nsv.getChildAt(nsv.getChildCount() - 1); int d = view.getBottom(); d -= (nsv.getHeight() + nsv.getScrollY()); if (d == 0) { mOffset = mDatas.size(); showDialog(getString(R.string.loading),false); getLiveRecordData(); } } }); 下面是adapter: public class LiveListAdapter extends RecyclerView.Adapter<LiveListAdapter.MyViewHolder> implements View.OnClickListener { private LoadingDialog dialog; private Context mContext; private MyViewHolder holder; private List<HomePageNormalModles.DataBean> mDatas; private View.OnClickListener mListener; private final double PREVIEW_SCALE = 0.9; private boolean isMy; private Handler handler; private LayoutInflater inflater; public LiveListAdapter(Context context, List<HomePageNormalModles.DataBean> datas, View.OnClickListener mListener) { mContext = context; mDatas = datas; this.mListener = mListener; inflater=LayoutInflater.from(mContext); initDialog(); handler = new Handler(context.getMainLooper()); } private void initDialog() { dialog = new LoadingDialog(mContext, R.style.loading_dialog); dialog.setTitle("正在删除"); dialog.setCancelable(false);// 设置是否可以通过点击Back键取消 dialog.setCanceledOnTouchOutside(false);// 设置在点击Dialog外是否取消Dialog进度条 } /** * 是不是自己的看到的个人中心 * * @param isMy */ public void isMy(boolean isMy) { this.isMy = isMy; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = inflater.inflate(R.layout.item_live_record, parent, false); holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(final MyViewHolder holder, final int position) { //TODO 容易内容溢出 需要优化 ImageLoadUtils.getInstance().displayImageOptions(holder.ivPreview, mDatas.get(position).getThumbUrl(), R.drawable.waiting_hot_health); String liveName = mDatas.get(position).getLiveName(); if (TextUtils.isEmpty(liveName)) { holder.tvLiveName.setVisibility(View.GONE); } else { holder.tvLiveName.setText(StringUtil.appendLiveName(liveName)); holder.tvLiveName.setVisibility(View.VISIBLE); } holder.tvStatus.setText(R.string.video_record); HomePageNormalModles.DataBean.LiveStatBean liveStat = mDatas.get(position).getLiveStat(); if (liveStat != null) { holder.tvRecomend.setText(String.valueOf(liveStat.getCommentsCount())); holder.tvLike.setText(String.valueOf(liveStat.getLikeCount())); } if (isMy) { holder.delete.setVisibility(View.VISIBLE); } else { holder.delete.setVisibility(View.GONE); } holder.llShare.setOnClickListener(mListener); holder.llShare.setTag(position); holder.ivPreview.setOnClickListener(mListener); holder.delete.setOnClickListener(mListener); holder.ivPreview.setTag(position); holder.delete.setTag(position); holder.delete.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (dialog != null && !dialog.isShowing()) { dialog.show(); } deleteRecord(position); } }); } @Override public int getItemCount() { return mDatas == null ? 0 : mDatas.size(); } @Override public void onClick(View v) { } public static class MyViewHolder extends RecyclerView.ViewHolder { ImageView ivPreview; TextView tvLiveName; TextView tvStatus; TextView tvRecomend; TextView tvLike; LinearLayout llShare; LinearLayout delete; public MyViewHolder(View itemView) { super(itemView); ivPreview = (ImageView) itemView.findViewById(R.id.element_priview_iv_content); tvLiveName = (TextView) itemView.findViewById(R.id.item_live_record_name); tvStatus = (TextView) itemView.findViewById(R.id.elment_priview_tv_status); tvRecomend = (TextView) itemView.findViewById(R.id.item_live_record_recommend); tvLike = (TextView) itemView.findViewById(R.id.live_recorde_tv_like); llShare = (LinearLayout) itemView.findViewById(R.id.item_live_record_share); delete = (LinearLayout) itemView.findViewById(R.id.item_live_record_delete); } }
DatePickerDialog中为什么点击屏幕外不消失?
final Calendar objTime = Calendar.getInstance(); int iYear = objTime.get(Calendar.YEAR); int iMonth = objTime.get(Calendar.MONTH); int iDay = objTime.get(Calendar.DAY_OF_MONTH); DatePickerDialog datePickerDialog = new DatePickerDialog(QueryDateActivity.this, DatePickerListener, iYear, iMonth, iDay); datePickerDialog.setCanceledOnTouchOutside(true); datePickerDialog.show(); 我已经设置为true了 可是还是不消失为什么? /**下面是原代码 */ final DatePickerDialog mDialog_start = new DatePickerDialog(this, null, con_year_start, con_month_start, con_day_start); //手动设置按钮 mDialog_start.setButton(DialogInterface.BUTTON_POSITIVE, "完成", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //通过mDialog.getDatePicker()获得dialog上的DatePicker组件,然后可以获取日期信息 DatePicker datePicker = mDialog_start.getDatePicker(); int year = datePicker.getYear(); int month = datePicker.getMonth(); int day = datePicker.getDayOfMonth(); tv_start.setText(year+"/"+months[month]+"/"+day); con_year_start = year; con_month_start = month; con_day_start = day; } }); //取消按钮,如果不需要直接不设置即可 mDialog_start.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { mDialog_start.dismiss(); } }); mDialog_start.setTitle("请选择开始时间"); mDialog_start.setCanceledOnTouchOutside(true); mDialog_start.show();
异步网络请求,用的是Retrofit+okhttp+rxjava网络不好的情况下,怎么给出提示。
一个点击按钮,里面是一个网络异步请求,我点击时会出来一个dialog: ``` test.setOnClickListener{ initDialog() RetrofitManager2.getApiBase().getRecognition("参数...") .timeout(10, TimeUnit.SECONDS) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()).subscribe( Action1 { if (mDialog != null) { mDialog!!.dismiss() } }, ApiErrorHandler(object : ApiErrorListener(){//这里是自定义的错误 override fun onConnectException(t: Throwable) { super.onConnectException(t) ToastUtils.showShort(R.string.no_internet) } override fun onDatabaseException(t: DatabaseException) { super.onDatabaseException(t) } override fun onOtherException(t: Throwable) { super.onOtherException(t) } })) } fun initDialog() { if (mDialog != null) { mDialog!!.dismiss() } mDialog = Dialog(this, R.style.Dialog) mDialog!!.setContentView(R.layout.firset_dialog_view) val window = mDialog!!.getWindow() val lp = window!!.attributes val screenW = getScreenWidth() lp.width = (0.6 * screenW).toInt() val titleTxtv = mDialog!!.findViewById<View>(R.id.tvLoad) as TextView titleTxtv.text = "请稍等..." mDialog!!.show() mDialog!!.setCanceledOnTouchOutside(false) } ``` 如果在网络不好的情况下,这个dialog会一直在转圈,我想设置一个10秒的时间,如果这个请求还没有完成就给用户一个"当前网络信号不好",这样的提示,我用了rxjava的timeout,但是我找不到onError这个方法,都是onErrorReturn、onErrorResumeNext、onExceptionResumeNext这几个,对rxjava的运用还是不怎么熟悉,请问这个应该怎么实现。 object RetrofitManager { private val unsafeHttpClient: OkHttpClient by lazy { createUnSafeOkHttpClient() } private val httpClient: OkHttpClient by lazy { createOkhttpClient() } private val retrofitClient: Retrofit by lazy { createRetrofit() } private val api:ApiBase by lazy { retrofitClient.create(ApiBase::class.java) } fun getOkHttpClient(): OkHttpClient = httpClient fun getUnSafeOkHttpClient(): OkHttpClient = unsafeHttpClient fun getRetrofit(): Retrofit = retrofitClient fun getApiBase(): ApiBase = api private fun createOkhttpClient(): OkHttpClient { val loggingInterceptor = HttpLoggingInterceptor() loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY return OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(15, TimeUnit.SECONDS) .writeTimeout(15, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor) .addInterceptor(ApiPostInterceptor()) .addInterceptor(ApiResponseInterceptor()) .addInterceptor(ApiAutoBaseUrlInterceptor()) .build() } private fun createRetrofit(): Retrofit { return Retrofit.Builder() .baseUrl(TT_PHP_SERVER) .client(httpClient) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .addConverterFactory(GsonConverterFactory.create()) .build() } private fun createUnSafeOkHttpClient(): OkHttpClient { val loggingInterceptor = HttpLoggingInterceptor() loggingInterceptor.level = HttpLoggingInterceptor.Level.BODY return UnsafeOkHttpClient.getUnsafeOkHttpClientBuilder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(15, TimeUnit.SECONDS) .writeTimeout(15, TimeUnit.SECONDS) .addInterceptor(loggingInterceptor) .build() } } @POST("china_mobile_recognition.php") @FormUrlEncoded fun getRecognition(@Field("session") session:String?,@Field("user_id")user_id:String?,@Field("appid")appid:String? ,@Field("token")token:String?,@Field("timestamp")timestamp:String?,@Field("phonenum")phonenum:String? ,@Field("msgid")msgid:String?,@Field("Sign")Sign:String?): Observable<vildphoneBean>
DialogFragment中使用viewpager+fragment时出现问题
fragment does not have a view ``` package com.yidi.livelibrary.widget.dialog; import android.app.Dialog; import android.content.DialogInterface; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.DialogFragment; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.view.Gravity; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager; import android.widget.TextView; import com.hn.library.utils.AppLogger; import com.yidi.livelibrary.R; import com.yidi.livelibrary.ui.fragment.HnContributionFragment; import java.util.ArrayList; import java.util.List; /** * Menu Dialog */ public class HnContributionDialog extends DialogFragment implements View.OnClickListener { private FragmentActivity mActivity; private TextView tvLeft; private TextView tvMiddle; private TextView tvRight; private ViewPager viewPager; private String anchor_user_id; private ArrayList<Fragment> mFragments = new ArrayList<>(); public static HnContributionDialog newInstance(String anchor_user_id) { Bundle bundle = new Bundle(); bundle.putString("anchor_user_id",anchor_user_id); HnContributionDialog sDialog = new HnContributionDialog(); sDialog.setArguments(bundle); return sDialog; } @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mActivity = getActivity(); Bundle bundle = getArguments(); if (bundle != null) { anchor_user_id = bundle.getString("anchor_user_id"); AppLogger.e(anchor_user_id); } } @Override public Dialog onCreateDialog(Bundle savedInstanceState) { View view = View.inflate(mActivity, R.layout.live_left_dialog, null); Dialog dialog = null; dialog = new Dialog(mActivity, R.style.LeftDialog); dialog.setContentView(view); dialog.setCanceledOnTouchOutside(true); Window alertWindow = dialog.getWindow(); WindowManager.LayoutParams params = alertWindow.getAttributes(); alertWindow.setGravity(Gravity.LEFT); params.height = (mActivity.getWindowManager().getDefaultDisplay().getHeight()); params.width = mActivity.getWindowManager().getDefaultDisplay().getWidth(); alertWindow.setAttributes(params); dialog.getWindow().setDimAmount(0f); //初始化组件 initView(view); return dialog; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); } /** * 初始化视图 * * @param view */ private void initView(View view) { tvLeft = (TextView) view.findViewById(R.id.tvLeft); tvMiddle = (TextView) view.findViewById(R.id.tvMiddle); tvRight = (TextView) view.findViewById(R.id.tvRight); viewPager = (ViewPager) view.findViewById(R.id.vp); view.findViewById(R.id.vOut).setOnClickListener(this); tvLeft.setSelected(true); tvLeft.setOnClickListener(this); tvMiddle.setOnClickListener(this); tvRight.setOnClickListener(this); viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { } @Override public void onPageSelected(int position) { switch (position) { case 0: tvLeft.setSelected(true); tvMiddle.setSelected(false); tvRight.setSelected(false); break; case 1: tvLeft.setSelected(false); tvMiddle.setSelected(true); tvRight.setSelected(false); break; case 2: tvLeft.setSelected(false); tvMiddle.setSelected(false); tvRight.setSelected(true); break; default: break; } } @Override public void onPageScrollStateChanged(int state) { } }); mFragments.add(HnContributionFragment.newInstance("day",anchor_user_id)); mFragments.add(HnContributionFragment.newInstance("week",anchor_user_id)); mFragments.add(HnContributionFragment.newInstance("all",anchor_user_id)); PagerAdapter adapter = new PagerAdapter(getFragmentManager(), mFragments); viewPager.setAdapter(adapter); } public void setViewPager(){ } class PagerAdapter extends FragmentPagerAdapter { private List<Fragment> mFragments; public PagerAdapter(FragmentManager fm, List<Fragment> mFragments) { super(fm); this.mFragments = mFragments; } @Override public int getCount() { return mFragments.size(); } @Override public CharSequence getPageTitle(int position) { return null; } @Override public Fragment getItem(int position) { Fragment fragment = mFragments.get(position); return fragment; } } @Override public void onClick(View v) { int id = v.getId(); if (id == R.id.tvLeft) { tvLeft.setSelected(true); tvMiddle.setSelected(false); tvRight.setSelected(false); } else if (id == R.id.tvMiddle) { tvLeft.setSelected(false); tvMiddle.setSelected(true); tvRight.setSelected(false); } else if (id == R.id.tvRight) { tvLeft.setSelected(false); tvMiddle.setSelected(false); tvRight.setSelected(true); } else if (id == R.id.vOut) { dismiss(); } } @Override public void onDestroy() { super.onDestroy(); } @Override public void onDismiss(DialogInterface dialog) { super.onDismiss(dialog); mActivity = null; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // TODO: inflate a fragment view View rootView = super.onCreateView(inflater, container, savedInstanceState); return rootView; } @Override public void onDestroyView() { super.onDestroyView(); } } ```
Android Progressdialog dismiss 后,触碰屏幕出现灰色遮罩层
请大家帮忙,Android Progressdialog dismiss 后,Progressdialog关闭 ,触碰屏幕出现灰色遮罩层,如progressdialog 的灰色背景,按下返回键后,恢复正常, android stdio 下信息: D/Surface: Surface::disconnect(this=0xb78fda70,api=1) D/OpenGLRenderer: CanvasContext() 0xb75e5ff8 initialize 0xb75f2628 // D/Surface: Surface::connect(this=0xb75f2620,api=1) D/mali_winsys: new_window_surface returns 0x3000 D/Surface: Surface::allocateBuffers(this=0xb75f2620) D/Surface: Surface::disconnect(this=0xb75f2620,api=1) 在Activity下代码: private ProgressDialog mDialog; private void showProgressDialog(){ if(mDialog==null){ mDialog = new ProgressDialog(this); mDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);//设置风格为圆形进度条 mDialog.setMessage("正在加载 ,请等待..."); mDialog.setMax(100); mDialog.setIndeterminate(false);//设置进度条是否为不明确 mDialog.setCancelable(true);//设置进度条是否可以按退回键取消 mDialog.setCanceledOnTouchOutside(false); mDialog.setOnDismissListener(new DialogInterface.OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { // TODO Auto-generated method stub mDialog=null; } }); mDialog.show(); } } private void closeProgressDialog(){ if(mDialog!=null){ mDialog.dismiss(); mDialog=null; } }
Android的ProgressBar在索尼手机中扭曲变形
![图片说明](https://img-ask.csdn.net/upload/201605/18/1463538992_656711.png) 为什么只有索尼手机才出现这种怪现象呢? ProgressBar都扭曲变形了。 请问有没有大神之前遇到过这样的问题,能否分享一下解决的经验? 代码如下: ``` private void showProgress() { mProgressDialog = new Dialog(this, R.style.CustomDialog); mProgressDialog.setCanceledOnTouchOutside(true); mProgressDialog.getWindow().setLayout(500, LinearLayout.LayoutParams.WRAP_CONTENT); LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(500, LinearLayout.LayoutParams.WRAP_CONTENT); params.gravity = Gravity.CENTER_HORIZONTAL; View view = LayoutInflater.from(this).inflate(R.layout.common_dialog, null); mProgressDialog.getWindow().setContentView(view, params); try { mProgressDialog.show(); } catch (WindowManager.BadTokenException e) { Log.e("BadTokenException", "Catch WindowManager.BadTokenException"); } } ``` ``` <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_margin="10dp" android:background="#66000000" android:gravity="center_horizontal" android:orientation="vertical"> <ProgressBar android:id="@+id/progressBar2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="10dp" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="10dp" android:paddingLeft="10dp" android:paddingRight="10dp" android:paddingTop="6dp" android:text="请骚等" android:textColor="@android:color/white" android:textSize="15sp" /> </LinearLayout> ``` ``` <style name="CustomDialog" parent="android:style/Theme.Dialog"> <!--背景颜色及透明程度--> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowFrame">@null</item> <!--边框--> <item name="android:windowIsFloating">true</item> <!--是否浮现在activity之上--> <item name="android:windowIsTranslucent">true</item> <!--半透明--> <item name="android:windowNoTitle">true</item> <!--无标题--> <item name="android:backgroundDimEnabled">false</item> <!--模糊--> <item name="android:backgroundDimAmount">0.6</item> </style> ```
Android ProgressDialog返回空
想要做一个进程对话框用在JSON捕捉数据时。但是返回空值。代码: class NetWork extends AsyncTask<Void, Void, ArrayAdapter<?>> { private ProgressDialog pd; public void Network() { try { ServiceStations service = new ServiceStations(); service.load(WorkshopActivity.this.getApplicationContext()); } catch (IOException e) { // do nothing e.printStackTrace(); } catch (JSONException e) { // do nothing e.printStackTrace(); } pd = new ProgressDialog(WorkshopActivity.this); pd.setMessage("Load"); pd.setCancelable(false); pd.setCanceledOnTouchOutside(false); } @Override public ArrayAdapter<?> doInBackground(Void... params) { @SuppressWarnings({ "unchecked", "rawtypes" }) final ArrayAdapter<?> areaAdapter = new ArrayAdapter( WorkshopActivity.this, android.R.layout.simple_list_item_1, ServiceStations.getAreaList()); return areaAdapter; } @Override protected void onPreExecute() { super.onPreExecute(); try { pd.show(); // this returns null } catch (NullPointerException e) { // TODO: handle exception e.printStackTrace(); } } @Override public void onPostExecute(ArrayAdapter<?> areaAdapter) { /* * if (dialog.isShowing()) { dialog.dismiss(); } */ list = (ListView) findViewById(R.id.listWorkshopCity); list.setAdapter(areaAdapter); adapter = areaAdapter; } } stacktrace: 07-15 04:34:15.006: W/System.err(3393): java.lang.NullPointerException 07-15 04:34:15.006: W/System.err(3393): at com.jatismobile.iklaim.activities.WorkshopActivity$NetWork.onPreExecute(WorkshopActivity.java:74) 07-15 04:34:15.026: W/System.err(3393): at android.os.AsyncTask.executeOnExecutor(AsyncTask.java:586) 07-15 04:34:15.026: W/System.err(3393): at android.os.AsyncTask.execute(AsyncTask.java:534) 07-15 04:34:15.036: W/System.err(3393): at com.jatismobile.iklaim.activities.WorkshopActivity.onCreate(WorkshopActivity.java:102)
在中国程序员是青春饭吗?
今年,我也32了 ,为了不给大家误导,咨询了猎头、圈内好友,以及年过35岁的几位老程序员……舍了老脸去揭人家伤疤……希望能给大家以帮助,记得帮我点赞哦。 目录: 你以为的人生 一次又一次的伤害 猎头界的真相 如何应对互联网行业的「中年危机」 一、你以为的人生 刚入行时,拿着傲人的工资,想着好好干,以为我们的人生是这样的: 等真到了那一天,你会发现,你的人生很可能是这样的: ...
我在支付宝花了1分钟,查到了女朋友的开房记录!
在大数据时代下,不管你做什么都会留下蛛丝马迹,只要学会把各种软件运用到极致,捉奸简直轻而易举。今天就来给大家分享一下,什么叫大数据抓出轨。据史料证明,马爸爸年轻时曾被...
程序员请照顾好自己,周末病魔差点一套带走我。
程序员在一个周末的时间,得了重病,差点当场去世,还好及时挽救回来了。
卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!
作者 | Rocky0429 来源 | Python空间 大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻… 网上资源眼花缭乱,下载的方式也同样千奇百怪,比如 BT 下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的 x 雷和某度网盘成了我经常使用的工具。 作为一个没有钱的穷鬼,某度网盘几十 kb 的下载速度让我...
20道你必须要背会的微服务面试题,面试一定会被问到
写在前面: 在学习springcloud之前大家一定要先了解下,常见的面试题有那块,然后我们带着问题去学习这个微服务技术,那么就会更加理解springcloud技术。如果你已经学了springcloud,那么在准备面试的时候,一定要看看看这些面试题。 文章目录1、什么是微服务?2、微服务之间是如何通讯的?3、springcloud 与dubbo有哪些区别?4、请谈谈对SpringBoot 和S...
为什么猝死的都是程序员,基本上不见产品经理猝死呢?
相信大家时不时听到程序员猝死的消息,但是基本上听不到产品经理猝死的消息,这是为什么呢? 我们先百度搜一下:程序员猝死,出现将近700多万条搜索结果: 搜索一下:产品经理猝死,只有400万条的搜索结果,从搜索结果数量上来看,程序员猝死的搜索结果就比产品经理猝死的搜索结果高了一倍,而且从下图可以看到,首页里面的五条搜索结果,其实只有两条才是符合条件。 所以程序员猝死的概率真的比产品经理大,并不是错...
毕业5年,我问遍了身边的大佬,总结了他们的学习方法
我问了身边10个大佬,总结了他们的学习方法,原来成功都是有迹可循的。
推荐10个堪称神器的学习网站
每天都会收到很多读者的私信,问我:“二哥,有什么推荐的学习网站吗?最近很浮躁,手头的一些网站都看烦了,想看看二哥这里有什么新鲜货。” 今天一早做了个恶梦,梦到被老板辞退了。虽然说在我们公司,只有我辞退老板的份,没有老板辞退我这一说,但是还是被吓得 4 点多都起来了。(主要是因为我掌握着公司所有的核心源码,哈哈哈) 既然 4 点多起来,就得好好利用起来。于是我就挑选了 10 个堪称神器的学习网站,推...
这些软件太强了,Windows必装!尤其程序员!
Windows可谓是大多数人的生产力工具,集娱乐办公于一体,虽然在程序员这个群体中都说苹果是信仰,但是大部分不都是从Windows过来的,而且现在依然有很多的程序员用Windows。 所以,今天我就把我私藏的Windows必装的软件分享给大家,如果有一个你没有用过甚至没有听过,那你就赚了????,这可都是提升你幸福感的高效率生产力工具哦! 走起!???? NO、1 ScreenToGif 屏幕,摄像头和白板...
阿里面试,面试官没想到一个ArrayList,我都能跟他扯半小时
我是真的没想到,面试官会这样问我ArrayList。
曾经优秀的人,怎么就突然不优秀了。
职场上有很多辛酸事,很多合伙人出局的故事,很多技术骨干被裁员的故事。说来模板都类似,曾经是名校毕业,曾经是优秀员工,曾经被领导表扬,曾经业绩突出,然而突然有一天,因为种种原因,被裁员了,...
大学四年因为知道了这32个网站,我成了别人眼中的大神!
依稀记得,毕业那天,我们导员发给我毕业证的时候对我说“你可是咱们系的风云人物啊”,哎呀,别提当时多开心啦????,嗯,我们导员是所有导员中最帅的一个,真的???? 不过,导员说的是实话,很多人都叫我大神的,为啥,因为我知道这32个网站啊,你说强不强????,这次是绝对的干货,看好啦,走起来! PS:每个网站都是学计算机混互联网必须知道的,真的牛杯,我就不过多介绍了,大家自行探索,觉得没用的,尽管留言吐槽吧???? 社...
良心推荐,我珍藏的一些Chrome插件
上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的 Chrome 浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。 我下面就把我日常工作和学习中经常用到的一些 Chrome 浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。 Markdown Here Markdown Here 可以让你更愉快的写邮件,由于支持 Markdown 直接转电子邮...
看完这篇HTTP,跟面试官扯皮就没问题了
我是一名程序员,我的主要编程语言是 Java,我更是一名 Web 开发人员,所以我必须要了解 HTTP,所以本篇文章就来带你从 HTTP 入门到进阶,看完让你有一种恍然大悟、醍醐灌顶的感觉。 最初在有网络之前,我们的电脑都是单机的,单机系统是孤立的,我还记得 05 年前那会儿家里有个电脑,想打电脑游戏还得两个人在一个电脑上玩儿,及其不方便。我就想为什么家里人不让上网,我的同学 xxx 家里有网,每...
2020 年,大火的 Python 和 JavaScript 是否会被取而代之?
Python 和 JavaScript 是目前最火的两大编程语言,但是2020 年,什么编程语言将会取而代之呢? 作者 |Richard Kenneth Eng 译者 |明明如月,责编 | 郭芮 出品 | CSDN(ID:CSDNnews) 以下为译文: Python 和 JavaScript 是目前最火的两大编程语言。然而,他们不可能永远屹立不倒。最终,必将像其他编程语言一...
史上最全的IDEA快捷键总结
现在Idea成了主流开发工具,这篇博客对其使用的快捷键做了总结,希望对大家的开发工作有所帮助。
阿里程序员写了一个新手都写不出的低级bug,被骂惨了。
这种新手都不会范的错,居然被一个工作好几年的小伙子写出来,差点被当场开除了。
谁是华为扫地僧?
是的,华为也有扫地僧!2020年2月11-12日,“养在深闺人不知”的华为2012实验室扫地僧们,将在华为开发者大会2020(Cloud)上,和大家见面。到时,你可以和扫地僧们,吃一个洋...
AI 没让人类失业,搞 AI 的人先失业了
最近和几个 AI 领域的大佬闲聊 根据他们讲的消息和段子 改编出下面这个故事 如有雷同 都是巧合 1. 老王创业失败,被限制高消费 “这里写我跑路的消息实在太夸张了。” 王葱葱哼笑一下,把消息分享给群里。 阿杰也看了消息,笑了笑。在座几位也都笑了。 王葱葱是个有名的人物,21岁那年以全额奖学金进入 KMU 攻读人工智能博士,累计发表论文 40 余篇,个人技术博客更是成为深度学习领域内风向标。 ...
2020年,冯唐49岁:我给20、30岁IT职场年轻人的建议
点击“技术领导力”关注∆每天早上8:30推送 作者|Mr.K 编辑| Emma 来源|技术领导力(ID:jishulingdaoli) 前天的推文《冯唐:职场人35岁以后,方法论比经验重要》,收到了不少读者的反馈,觉得挺受启发。其实,冯唐写了不少关于职场方面的文章,都挺不错的。可惜大家只记住了“春风十里不如你”、“如何避免成为油腻腻的中年人”等不那么正经的文章。 本文整理了冯...
最全最强!世界大学计算机专业排名总结!
我正在参与CSDN200进20,希望得到您的支持,扫码续投票5次。感谢您! (为表示感谢,您投票后私信我,我把我总结的人工智能手推笔记和思维导图发送给您,感谢!) 目录 泰晤士高等教育世界大学排名 QS 世界大学排名 US News 世界大学排名 世界大学学术排名(Academic Ranking of World Universities) 泰晤士高等教育世界大学排名 中国共...
作为一名大学生,如何在B站上快乐的学习?
B站是个宝,谁用谁知道???? 作为一名大学生,你必须掌握的一项能力就是自学能力,很多看起来很牛X的人,你可以了解下,人家私底下一定是花大量的时间自学的,你可能会说,我也想学习啊,可是嘞,该学习啥嘞,不怕告诉你,互联网时代,最不缺的就是学习资源,最宝贵的是啥? 你可能会说是时间,不,不是时间,而是你的注意力,懂了吧! 那么,你说学习资源多,我咋不知道,那今天我就告诉你一个你必须知道的学习的地方,人称...
那些年,我们信了课本里的那些鬼话
教材永远都是有错误的,从小学到大学,我们不断的学习了很多错误知识。 斑羚飞渡 在我们学习的很多小学课文里,有很多是错误文章,或者说是假课文。像《斑羚飞渡》: 随着镰刀头羊的那声吼叫,整个斑羚群迅速分成两拨,老年斑羚为一拨,年轻斑羚为一拨。 就在这时,我看见,从那拨老斑羚里走出一只公斑羚来。公斑羚朝那拨年轻斑羚示意性地咩了一声,一只半大的斑羚应声走了出来。一老一少走到伤心崖,后退了几步,突...
使用 Python 和百度语音识别生成视频字幕
文章目录从视频中提取音频根据静音对音频分段使用百度语音识别获取 Access Token使用 Raw 数据进行合成生成字幕总结 从视频中提取音频 安装 moviepy pip install moviepy 相关代码: audio_file = work_path + '\\out.wav' video = VideoFileClip(video_file) video.audio.write_...
一个程序在计算机中是如何运行的?超级干货!!!
强烈声明:本文很干,请自备茶水!???? 开门见山,咱不说废话! 你有没有想过,你写的程序,是如何在计算机中运行的吗?比如我们搞Java的,肯定写过这段代码 public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } ...
【蘑菇街技术部年会】程序员与女神共舞,鼻血再次没止住。(文末内推)
蘑菇街技术部的年会,别开生面,一样全是美女。
那个在阿里养猪的工程师,5年了……
简介: 在阿里,走过1825天,没有趴下,依旧斗志满满,被称为“五年陈”。他们会被授予一枚戒指,过程就叫做“授戒仪式”。今天,咱们听听阿里的那些“五年陈”们的故事。 下一个五年,猪圈见! 我就是那个在养猪场里敲代码的工程师,一年多前我和20位工程师去了四川的猪场,出发前总架构师慷慨激昂的说:同学们,中国的养猪产业将因为我们而改变。但到了猪场,发现根本不是那么回事:要个WIFI,没有;...
为什么程序猿都不愿意去外包?
分享外包的组织架构,盈利模式,亲身经历,以及根据一些外包朋友的反馈,写了这篇文章 ,希望对正在找工作的老铁有所帮助
Java校招入职华为,半年后我跑路了
何来 我,一个双非本科弟弟,有幸在 19 届的秋招中得到前东家华为(以下简称 hw)的赏识,当时秋招签订就业协议,说是入了某 java bg,之后一系列组织架构调整原因等等让人无法理解的神操作,最终毕业前夕,被通知调往其他 bg 做嵌入式开发(纯 C 语言)。 由于已至于校招末尾,之前拿到的其他 offer 又无法再收回,一时感到无力回天,只得默默接受。 毕业后,直接入职开始了嵌入式苦旅,由于从未...
世界上有哪些代码量很少,但很牛逼很经典的算法或项目案例?
点击上方蓝字设为星标下面开始今天的学习~今天分享四个代码量很少,但很牛逼很经典的算法或项目案例。1、no code 项目地址:https://github.com/kelseyhight...
Python全栈 Linux基础之3.Linux常用命令
Linux对文件(包括目录)有很多常用命令,可以加快开发效率:ls是列出当前目录下的文件列表,选项有-a、-l、-h,还可以使用通配符;c功能是跳转目录,可以使用相对路径和绝对路径;mkdir命令创建一个新的目录,有-p选项,rm删除文件或目录,有-f、-r选项;cp用于复制文件,有-i、-r选项,tree命令可以将目录结构显示出来(树状显示),有-d选项,mv用来移动文件/目录,有-i选项;cat查看文件内容,more分屏显示文件内容,grep搜索内容;>、>>将执行结果重定向到一个文件;|用于管道输出。
​两年前不知如何编写代码的我,现在是一名人工智能工程师
全文共3526字,预计学习时长11分钟 图源:Unsplash 经常有小伙伴私信给小芯,我没有编程基础,不会写代码,如何进入AI行业呢?还能赶上AI浪潮吗? 任何时候努力都不算晚。 下面,小芯就给大家讲一个朋友的真实故事,希望能给那些处于迷茫与徘徊中的小伙伴们一丝启发。(下文以第一人称叙述) 图源:Unsplash 正如Elsa所说,职业转换是...
强烈推荐10本程序员必读的书
很遗憾,这个春节注定是刻骨铭心的,新型冠状病毒让每个人的神经都是紧绷的。那些处在武汉的白衣天使们,尤其值得我们的尊敬。而我们这些窝在家里的程序员,能不外出就不外出,就是对社会做出的最大的贡献。 有些读者私下问我,窝了几天,有点颓丧,能否推荐几本书在家里看看。我花了一天的时间,挑选了 10 本我最喜欢的书,你可以挑选感兴趣的来读一读。读书不仅可以平复恐惧的压力,还可以对未来充满希望,毕竟苦难终将会...
Python实战:抓肺炎疫情实时数据,画2019-nCoV疫情地图
今天,群里白垩老师问如何用python画武汉肺炎疫情地图。白垩老师是研究海洋生态与地球生物的学者,国家重点实验室成员,于不惑之年学习python,实为我等学习楷模。先前我并没有关注武汉肺炎的具体数据,也没有画过类似的数据分布图。于是就拿了两个小时,专门研究了一下,遂成此文。
非典逼出了淘宝和京东,新冠病毒能够逼出什么?
loonggg读完需要5分钟速读仅需 2 分钟大家好,我是你们的校长。我知道大家在家里都憋坏了,大家可能相对于封闭在家里“坐月子”,更希望能够早日上班。今天我带着大家换个思路来聊一个问题...
牛逼!一行代码居然能解决这么多曾经困扰我半天的算法题
春节假期这么长,干啥最好?当然是折腾一些算法题了,下面给大家讲几道一行代码就能解决的算法题,当然,我相信这些算法题你都做过,不过就算做过,也是可以看一看滴,毕竟,你当初大概率不是一行代码解决的。 学会了一行代码解决,以后遇到面试官问起的话,就可以装逼了。 一、2 的幂次方 问题描述:判断一个整数 n 是否为 2 的幂次方 对于这道题,常规操作是不断这把这个数除以 2,然后判断是否有余数,直到 ...
立即提问