- 浏览: 157005 次
- 性别:
- 来自: 深圳
最新评论
-
dawei1980:
请问,解压密码是多少?
Android本地APP集成Mui框架 -
牧羊之人:
Android本地APP集成Mui框架 -
还有也许:
貌似懂了一点。如果onCreate方法中创建了一个db,然后在 ...
Android线程模式(handler,thread,looper) -
chenshijun0101:
header里面怎么更改他的样式呢?急求
android Preference相关样式修改 -
qlraishui:
good
Binder机制分析【三】-service绑定Binder
EditText ed = new EditText(this); Editable eb = ed.getEditableText(); //获取光标位置 int position = ed.getSelectionStart(); //指定位置插入字符 eb.insert(position, "XXX"); //给你的EditText设置输入类型 TYPE_CLASS_NUMBER,这样你在点击EditText的时 候,默认弹出的键盘模式就是数字键盘。 ed.setInputType(InputType.TYPE_CLASS_NUMBER); //插入图片 //定义图片所占字节数(“Tag”的长度) SpannableString ss = new SpannableString("Tag"); //定义插入图片 Drawable drawable = getResources().getDrawable(R.drawable.icon); ss.setSpan(new ImageSpan(drawable,ImageSpan.ALIGN_BASELINE), 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); drawable.setBounds(2, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); //插入图片 eb.insert(position, ss); //设置可输入最大字节数 ed.setFilters(new InputFilter[]{new InputFilter.LengthFilter(10)}); //拉起lancher桌面 Intent i = new Intent(Inten.ACTION_MAIN); i.addCategory(Inten.CATEGORT_HOME); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(i); //去掉List拖动时的阴影 list.setCacheColorHint(0); // 通过资源名称获取资源id 1.Field f= (Field)R.drawable.class.getDeclaredField("Name"); int id=f.getInt(R.drawable.class); 2.int id = getResources().getIdentifier(getPackageName()+":drawable/Name", null,null); // timer TimerTask用法 mTimer = new Timer(); mTimerTask = new TimerTask() { @Override public void run() { mProgress.setProgress(mMediaPlayer.getCurrentPosition()); mHandler.sendEmptyMessage(0); } }; mTimer.schedule(mTimerTask, 0, 1000); // 在a.apk启动b.apk的实现 //1.a.apk实现 Intent mIntent = new Intent("package.MainActivity"); startActivity(mIntent); finish(); // b.apk在mainfest中配置 <intent-filter><action android:name="package.MainActivity"></action><category android:name="android.intent.category.DEFAULT"></category></intent-filter> //Android 获取存储卡路径和空间使用情况 /** 获取存储卡路径 */ File sdcardDir=Environment.getExternalStorageDirectory(); /** StatFs 看文件系统空间使用情况 */ StatFs statFs=new StatFs(sdcardDir.getPath()); /** Block 的 size*/ Long blockSize=statFs.getBlockSize(); /** 总 Block 数量 */ Long totalBlocks=statFs.getBlockCount(); /** 已使用的 Block 数量 */ Long availableBlocks=statFs.getAvailableBlocks(); //Android 为Activity屏幕的标题添加图标 Window win = getWindow(); win.requestFeature(Window.FEATURE_LEFT_ICON); setContentView(R.layout.mylayout); win.setFeatureDrawableResource(Window.FEATURE_LEFT_ICON, R.drawable.icon); //图片缩放 1.ThumbnailUtils.extractThumbnail(bitmap,200,100) 2. //使用Bitmap加Matrix来缩放 public static Drawable resizeImage(Bitmap bitmap, int w, int h) { Bitmap BitmapOrg = bitmap; int width = BitmapOrg.getWidth(); int height = BitmapOrg.getHeight(); int newWidth = w; int newHeight = h; float scaleWidth = ((float) newWidth) / width; float scaleHeight = ((float) newHeight) / height; Matrix matrix = new Matrix(); matrix.postScale(scaleWidth, scaleHeight); // if you want to rotate the Bitmap // matrix.postRotate(45); Bitmap resizedBitmap = Bitmap.createBitmap(BitmapOrg, 0, 0, width, height, matrix, true); return new BitmapDrawable(resizedBitmap); } 3. //使用BitmapFactory.Options的inSampleSize参数来缩放 public static Drawable resizeImage2(String path, int width,int height) { BitmapFactory.Options options = new BitmapFactory.Options(); options.inJustDecodeBounds = true;//不加载bitmap到内存中 BitmapFactory.decodeFile(path,options); int outWidth = options.outWidth; int outHeight = options.outHeight; options.inDither = false; options.inPreferredConfig = Bitmap.Config.ARGB_8888; options.inSampleSize = 1; if (outWidth != 0 && outHeight != 0 && width != 0 && height != 0) { int sampleSize=(outWidth/width+outHeight/height)/2; Log.d(tag, "sampleSize = " + sampleSize); options.inSampleSize = sampleSize; } options.inJustDecodeBounds = false; return new BitmapDrawable(BitmapFactory.decodeFile(path, options)); } // 通过WindowManager实现模态窗口效果 mWm = (WindowManager)getSystemService(Context.WINDOW_SERVICE); Button view = new Button(this); view.setText("window manager test!"); view.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mWm.removeView(v); } }); WindowManager.LayoutParams mParams = new WindowManager.LayoutParams(100, 100, 2, 0, -1); mWm.addView(view, mParams); // 模拟心跳效果 vibrator = (Vibrator) getSystemService(VIBRATOR_SERVICE); long[] pattern = {800, 50, 400, 30}; // OFF/ON/OFF/ON... vibrator.vibrate(pattern, 2);//-1不重复,非-1为从pattern的指定下标开始重复//打印cursor消息 DatabaseUtils.dumpCurrentRow(cursor);// 防止代码被反编译
将android-sdk-windows\tools\lib\地下的文件proguard.cfg拷贝到你的项目工程下,然后修改default.properties文件。在最后面加上proguard.config=proguard.cfg即可。完整的default.properties文件如下:
# This file is automatically generated by Android Tools.
# Do not modify this file -- YOUR CHANGES WILL BE ERASED!
#
# This file must be checked in Version Control Systems.
#
# To customize properties used by the Ant build system use,
# "build.properties", and override values to adapt the script to your
# project structure.
# Project target.
target=android-9
proguard.config=proguard.cfg
//监听数据库变化 class SmsContent extends ContentObserver { private Cursor cursor = null; public SmsContent(Handler handler) { super(handler); } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); } } } SmsContent content = new SmsContent(new Handler()); // 注册短信变化监听 this.getContentResolver().registerContentObserver( Uri.parse("content://sms/"), true, content);
// 获取系统时间是24小时制还是12小时制 ContentResolver cv = this.getContentResolver(); String strTimeFormat = android.provider.Settings.System.getString(cv, android.provider.Settings.System.TIME_12_24); if(strTimeFormat.equals("24")) { Log.i("activity","24"); }
// 设置菜单的背景 /** * 设置菜单的背景色 * ActionMenuItemView ActionMode菜单 * IconMenuItemView 普通菜单 */ protected void setMenuBackground(){ getLayoutInflater().setFactory(new Factory() { @Override public View onCreateView(String name, Context context, AttributeSet attrs) { if(name.equalsIgnoreCase("com.android.internal.view.menu.ActionMenuItemView")) { try { final View view = getLayoutInflater().createView(name, null, attrs); new Handler().post(new Runnable() { public void run() { view.setBackgroundResource(R.drawable.list_item_bg_selector); } }); return view; } catch(InflateException e) { Log.e(TAG, "InflateException exception !"); } catch(ClassNotFoundException e) { Log.e(TAG, "ClassNotFoundException exception !"); } } return null; } }); }
// 不让弹出键盘挡住view <activity android:name=".activity.SMSInterceptActivity" android:windowSoftInputMode="adjustResize|stateHidden"/> // windowSoftInputMode影响两件事情:1.软键盘的状态(隐藏,显示)2.活动主窗口的调整(平移,收缩)
//拉起后台正在通话的界面 /** * 判断当前是否处于通话状态 * @return */ private boolean isCallStateIdle(){ TelephonyManager mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); int stateSim1 = mTelephonyManager.getCallState(); return stateSim1 != TelephonyManager.CALL_STATE_IDLE; } /** * @return true if the phone is "in use", meaning that at least one line is * active (ie. off hook or ringing or dialing). */ private boolean phoneIsInUse() { boolean phoneInUse = false; try { ITelephony phone = ITelephony.Stub.asInterface(ServiceManager .checkService("phone")); if (phone != null) phoneInUse = !phone.isIdle(); } catch (RemoteException e) { Log.w(TAG, "phone.isIdle() failed", e); } return phoneInUse; } if(isCallStateIdle()) { try { String pkg="com.android.phone"; Context context=createPackageContext(pkg, Context.CONTEXT_IGNORE_SECURITY); Intent it =new Intent(); it.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); it.setClassName(context, "com.android.phone.InCallScreen"); context.startActivity(it); } catch (NameNotFoundException e) { Log.e(TAG, "com.android.phone.InCallScreen is not find"); } }
//判断service是否已经在运行 public static boolean isServiceExisted(Context context, String className) { ActivityManager activityManager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); List<ActivityManager.RunningServiceInfo> serviceList = activityManager.getRunningServices(Integer.MAX_VALUE); if(!(serviceList.size() > 0)) { return false; } for(int i = 0; i < serviceList.size(); i++) { RunningServiceInfo serviceInfo = serviceList.get(i); ComponentName serviceName = serviceInfo.service; if(serviceName.getClassName().equals(className)) { return true; } } return false; }
// 保存图片 try { // 写入文件 Bitmap image = BitmapFactory.decodeResource(getResources(), R.drawable.bg); String directory = String.format( "%s/%s", Environment.getExternalStoragePublicDirectory( Environment.DIRECTORY_PICTURES) .getAbsolutePath(), "zhy"); File dir = new File(directory); if (!dir.exists()){ dir.mkdirs(); } File file = new File(directory, "zhy.jpeg"); OutputStream outputStream = new FileOutputStream(file); if (image != null) { image.compress(CompressFormat.JPEG, 100, outputStream); } outputStream.close(); } catch (Throwable e) { e.printStackTrace(); }
// 修改系统语言 // 需要权限<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/> private void setLanguage() { try { IActivityManager am = ActivityManagerNative.getDefault(); Configuration config = am.getConfiguration(); config.locale = Locale.ENGLISH; am.updateConfiguration(config); BackupManager.dataChanged("com.android.providers.settings"); } catch (RemoteException e) { e.printStackTrace(); } }
// TextView图文混排 // 1.Html标签实现 CharSequence c = Html.fromHtml(getString(R.string.html_text), new ImageGetter() { @Override public Drawable getDrawable(String arg0) { Drawable d = getResources().getDrawable(R.drawable.pen); d.setBounds(0, 0, d.getIntrinsicWidth(), d.getIntrinsicHeight()); return d; } }, null); mTv1.setText(c); // 2.ImageSpan实现 Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.pen); ImageSpan is = new ImageSpan(this, b); SpannableString ss = new SpannableString("FUCKimaFuck"); ss.setSpan(is, 4, 7, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); mTv2.setText(ss); //TExtview自定义链接跳转 SpannableString ss2 = new SpannableString("Link------"); ss2.setSpan(new ClickableSpan() { @Override public void onClick(View arg0) { Intent intent = new Intent(mContext, ImageTextActivity.class); startActivity(intent); } }, 0, 10, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE); mTv2.setText(ss2); mTv2.setMovementMethod(LinkMovementMethod.getInstance()); // 字符串的灵活使用 <string name="html_text"><![CDATA[电话<font color="#fd7320">%1s</font>]]></string> textView = (TextView) findViewById(R.id.my_textview); String text = getString(R.string.html_text); textView.setText(Html.fromHtml(String.format(text, "18658810629"))); CharSequence s2 = Html.fromHtml("afd<font color=\"#4399c8\">1233435</font>"); b.setText(s2);
//效果:
// 检测系统是否存在你定义action的activity PackageManager pm = getPackageManager(); Intent i = new Intent("your defined action"); List<ResolveInfo> data = pm.queryIntentActivities(i, PackageManager.GET_INTENT_FILTERS); if(data.size() <= 0){ Log.e("XXX", "Activity action not exist"); } // 检测系统是否存在你定义action的Receivers pm.queryBroadcastReceivers(i, PackageManager.GET_INTENT_FILTERS); // 检测系统是否存在你定义action的Service pm.queryIntentServices(i, PackageManager.GET_INTENT_FILTERS); // 对于aidl service,可以通过bindservice来确定 if(!bindService(i,serviceConnection,Context.BIND_AUTO_CREATE)){ Log.e("XXX", "service not exist"); } // 检测系统是否存在你定义action的queryContentProviders pm.queryContentProviders("uri", arg1, arg2); // 通过这种方式判断 Uri uri = Uri.parse("uri"); Cursor c = getContentResolver().query(uri, new String[]{"",""}, null, null, null); if(c == null){ Log.e("XXX", "ContentProvider not exist"); }
//将日期格式化为系统的日期格式 String date = DateFormat.getDateFormat(mContext).format(new Date());
// 竖直进度条的简单实现,通过imageview做 // 定义背景图片xml <clip xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/bg_cling5" android:clipOrientation="vertical" android:gravity="top"> </clip> // 使用方法 ImageView seekbar = (ImageView)findViewById(R.id.seekbar); ClipDrawable bg = (ClipDrawable) seekbar.getDrawable(); // 从图顶端截取图像的30% bg.setLevel(3000);
LockPatternUtils mLockPatternUtils = new LockPatternUtils(this); // 图案 true mLockPatternUtils.isLockPatternEnabled(); mLockPatternUtils.savedPatternExists() // 密码 true mLockPatternUtils.isLockPasswordEnabled(); // 无 true mLockPatternUtils.isLockScreenDiseabled(); // 以上全false就是滑动
- NotificationDemo.zip (1.2 MB)
- 描述: notification NotificationCompat.Builder Toast
- 下载次数: 2
发表评论
-
判断图片是浅色还是深色
2020-03-04 13:23 790首先需要获取 WallpaperManager.FLAG_L ... -
如何将uri转成真实路径地址
2018-10-15 17:38 1196/** * 获取文件选择器选中的文 ... -
备用网址记录
2018-01-08 11:05 430各种开源下载 http://www.mvnjar.com/ ... -
android中touch事件,click事件,longclick事件分析
2016-08-03 15:51 1495针对屏幕上的一个View控件,Android如何区分应当触发o ... -
Android 快速开发系列 打造万能的ListView GridView 适配器
2016-06-27 17:21 675前往 http://blog.csdn.net/lmj6235 ... -
android中的Handler和AsyncTask如何防止内存泄露
2016-06-13 13:55 1634Handler泄露的关键点有两个: 1). 内部类 ... -
[转载]SharedPreferences 存储java对象,很实用
2016-04-14 16:36 1056public void putObject(String ke ... -
Android本地APP集成Mui框架
2016-01-26 14:41 31322.如何在安卓原生APP中 ... -
Android与设计模式浅谈
2015-04-27 10:42 1082Android作为新一代的操作系统,集合着Google ... -
从网页启动Activity
2015-03-24 11:28 1366正好Android SDK 给我们提供了解决方案,在网页中点击 ... -
[转]android shape的使用
2014-10-13 13:30 760shape用于设定形状,可以在selector,layout等 ... -
touch事件分发处理流程
2014-05-23 09:44 817Touch 事件发生时 Activity 的 dispatch ... -
修改标准GSensor相关,是重力感应游戏在平板都可以玩
2013-12-21 11:27 852为什么有些重力感应的游戏不能玩,有些可以玩,主要原因在于fra ... -
Android模拟按键
2013-10-14 14:27 2405如果想要实现类似iphone的悬浮框按钮,那就必须知道如何去模 ... -
android资源适配解析及资源适配优先级规则
2013-10-12 12:41 36731.sw的值是怎么计算得来 ... -
[转]隐藏虚拟按键(导航栏)的方法
2013-10-12 10:35 2895Controls for system UI visibili ... -
【转】解决Android与服务器交互大容量数据问题
2013-09-02 14:40 2055对于目前的状况来说, ... -
[转载]Android大图裁剪解决办法
2013-04-25 14:29 2128cropimage 可以调用手机自带的com.android ... -
反锯齿办法
2012-12-28 14:14 951在Android中,目前,我知道有两种出现锯齿的情况。 ① ... -
android线程的那些事
2012-11-17 15:36 2313有些时候Thread里面更新UI是可以成功的。 比如在Acti ...
相关推荐
以上仅是部分可能涵盖的Android开发技巧,实际的《Android开发技巧合集》可能包含更多深度内容,如Android新特性的使用、安全实践、热修复技术、动画效果实现等。对于任何Android开发者来说,这份资源都是一份宝贵的...
以上就是Android开发中的一些核心技巧,理解并熟练运用这些知识点,能帮助开发者更好地构建功能丰富、用户体验优良的应用程序。在实际项目中,还需要关注性能优化、内存管理、多线程处理、网络请求、数据库操作等...
本文将深入探讨在"android开发游戏技巧集锦"中所涵盖的一些核心知识点,旨在为初入此领域的开发者提供宝贵的指导。 首先,理解Android游戏的基础架构至关重要。游戏通常由用户界面(UI)、游戏逻辑、渲染引擎和资源...
《Android开发技巧合集》这份压缩包文件虽然体积小巧,只有3.5M,但其内容却涵盖了Android开发的诸多重要知识点。作为一个Android开发者,掌握这些技巧将对你的职业生涯大有裨益。以下是对这份资源的详细解读: 1. ...
《Android绘图技巧Demo》是针对Android平台上的图形绘制技术的一个示例项目,旨在帮助开发者理解和实践Android系统中的自定义视图(Custom View)和图形渲染能力。在Android开发中,自定义视图允许开发者超越标准UI...
《Android开发技巧总汇——(2)[收集].pdf》是一份深入探讨Android开发技术的文档,涵盖了多个关键领域的知识和技巧。以下是对其中主要知识点的详细解析: 1. **Activity**: - **Activity的生命周期**:Activity是...
"Android开发技巧5篇"这个压缩包文件提供了丰富的学习资源,涵盖了Android开发中的核心知识点。下面,我们将详细探讨这些技巧,并深入理解它们在实际开发中的应用。 1. **Activity管理**:在Android应用中,...
以下是一些基于“android开发技巧整理”的核心知识点: 1. **资源优化**:优化图片资源是Android开发中的重要一环。使用WebP格式可以减少图片大小而不牺牲质量。对于SVG矢量图,可以避免在不同设备上因分辨率差异...
总的来说,《Android开发技巧合集》是一本全面且深入的教程,无论你是初入Android开发的新手,还是经验丰富的开发者,都能从中获得宝贵的知识和启示,提升你的开发技能。通过学习和实践书中的技巧,你将能够更好地...
一些很不错的Android开发技巧,这个项目翻译自 android-tips-tricks 去掉了一些我认为不重要的,对我使用过的东东做了评价,同时翻译了一些自己没有注意到的知识点的文章。 :heart: star 支持一下 欢迎协作 了解你的...
- Android Studio作为官方集成开发环境,其各种快捷键、调试技巧、插件使用都是开发者需要掌握的。 - 使用版本控制系统如Git进行团队协作,理解分支管理和合并策略。 - Profiler工具的使用,包括内存分析、CPU...
在进行Android应用开发时,开发者不仅需要掌握Java编程语言的基础知识,还需要了解Android特有的框架结构、组件以及API等。以下几点是Android开发与普通Java开发的主要区别: 1. **UI设计**:Android提供了丰富的UI...
**Android小技巧手册** 这份手册聚焦于Android开发中的实用技巧,旨在帮助开发者和学习者提升工作效率,更好地理解和操作Android系统。以下是一些关键知识点的详细解释: 1. **让Android模拟器支持Cupcake屏幕键盘...
以下是一些Android开发中的关键知识点,结合"Android - 小技巧手册"的资源,我们可以深入探讨。 1. **布局优化**:Android布局优化是提升应用性能的关键。使用`ConstraintLayout`进行布局管理,可以减少嵌套,提高...
根据提供的信息,我们可以总结出以下有关“eoe特刊08_android开发技巧”的知识点: ### 1. eoe特刊简介 - **eoe特刊**是中国早期专注于Android系统的一本技术杂志,由eoeAndroid社区组织策划并发布。该社区致力于...
在Android开发领域,掌握...通过阅读"Android开发技巧总汇"中的各个文档,开发者可以逐步掌握这些关键点,并将理论知识转化为实践能力。这不仅有助于提高开发效率,还能创造出更加优秀、用户友好的Android应用程序。