`
zhy20045923
  • 浏览: 156665 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android使用技巧知识

阅读更多
        
        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就是滑动
  • 大小: 6.1 KB
  • NotificationDemo.zip (1.2 MB)
  • 描述: notification NotificationCompat.Builder Toast
  • 下载次数: 2
分享到:
评论

相关推荐

    Android开发技巧合集.zip

    以上仅是部分可能涵盖的Android开发技巧,实际的《Android开发技巧合集》可能包含更多深度内容,如Android新特性的使用、安全实践、热修复技术、动画效果实现等。对于任何Android开发者来说,这份资源都是一份宝贵的...

    android 开发技巧总汇

    以上就是Android开发中的一些核心技巧,理解并熟练运用这些知识点,能帮助开发者更好地构建功能丰富、用户体验优良的应用程序。在实际项目中,还需要关注性能优化、内存管理、多线程处理、网络请求、数据库操作等...

    android开发游戏技巧集锦

    本文将深入探讨在"android开发游戏技巧集锦"中所涵盖的一些核心知识点,旨在为初入此领域的开发者提供宝贵的指导。 首先,理解Android游戏的基础架构至关重要。游戏通常由用户界面(UI)、游戏逻辑、渲染引擎和资源...

    Android开发技巧合集

    《Android开发技巧合集》这份压缩包文件虽然体积小巧,只有3.5M,但其内容却涵盖了Android开发的诸多重要知识点。作为一个Android开发者,掌握这些技巧将对你的职业生涯大有裨益。以下是对这份资源的详细解读: 1. ...

    Android绘图技巧Demo

    《Android绘图技巧Demo》是针对Android平台上的图形绘制技术的一个示例项目,旨在帮助开发者理解和实践Android系统中的自定义视图(Custom View)和图形渲染能力。在Android开发中,自定义视图允许开发者超越标准UI...

    Android开发技巧总汇——(2)[收集].pdf

    《Android开发技巧总汇——(2)[收集].pdf》是一份深入探讨Android开发技术的文档,涵盖了多个关键领域的知识和技巧。以下是对其中主要知识点的详细解析: 1. **Activity**: - **Activity的生命周期**:Activity是...

    Android开发技巧5篇

    "Android开发技巧5篇"这个压缩包文件提供了丰富的学习资源,涵盖了Android开发中的核心知识点。下面,我们将详细探讨这些技巧,并深入理解它们在实际开发中的应用。 1. **Activity管理**:在Android应用中,...

    android开发技巧整理

    以下是一些基于“android开发技巧整理”的核心知识点: 1. **资源优化**:优化图片资源是Android开发中的重要一环。使用WebP格式可以减少图片大小而不牺牲质量。对于SVG矢量图,可以避免在不同设备上因分辨率差异...

    Android开发技巧合集.rar

    总的来说,《Android开发技巧合集》是一本全面且深入的教程,无论你是初入Android开发的新手,还是经验丰富的开发者,都能从中获得宝贵的知识和启示,提升你的开发技能。通过学习和实践书中的技巧,你将能够更好地...

    Android代码-震惊!如此多的Android开发技巧!!!

    一些很不错的Android开发技巧,这个项目翻译自 android-tips-tricks 去掉了一些我认为不重要的,对我使用过的东东做了评价,同时翻译了一些自己没有注意到的知识点的文章。 :heart: star 支持一下 欢迎协作 了解你的...

    android 小技巧rar

    - Android Studio作为官方集成开发环境,其各种快捷键、调试技巧、插件使用都是开发者需要掌握的。 - 使用版本控制系统如Git进行团队协作,理解分支管理和合并策略。 - Profiler工具的使用,包括内存分析、CPU...

    android开发技巧与性能优化

    在进行Android应用开发时,开发者不仅需要掌握Java编程语言的基础知识,还需要了解Android特有的框架结构、组件以及API等。以下几点是Android开发与普通Java开发的主要区别: 1. **UI设计**:Android提供了丰富的UI...

    Android小技巧手册

    **Android小技巧手册** 这份手册聚焦于Android开发中的实用技巧,旨在帮助开发者和学习者提升工作效率,更好地理解和操作Android系统。以下是一些关键知识点的详细解释: 1. **让Android模拟器支持Cupcake屏幕键盘...

    Android -小技巧手册

    以下是一些Android开发中的关键知识点,结合"Android - 小技巧手册"的资源,我们可以深入探讨。 1. **布局优化**:Android布局优化是提升应用性能的关键。使用`ConstraintLayout`进行布局管理,可以减少嵌套,提高...

    eoe特刊08_android开发技巧

    根据提供的信息,我们可以总结出以下有关“eoe特刊08_android开发技巧”的知识点: ### 1. eoe特刊简介 - **eoe特刊**是中国早期专注于Android系统的一本技术杂志,由eoeAndroid社区组织策划并发布。该社区致力于...

    Android开发技巧总汇

    在Android开发领域,掌握...通过阅读"Android开发技巧总汇"中的各个文档,开发者可以逐步掌握这些关键点,并将理论知识转化为实践能力。这不仅有助于提高开发效率,还能创造出更加优秀、用户友好的Android应用程序。

Global site tag (gtag.js) - Google Analytics