`
zhy20045923
  • 浏览: 155840 次
  • 性别: 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应用程序。

    Android开发技巧和用例总结

    在Android开发领域,掌握一些关键的技巧和实用案例可以极大地提升开发效率和代码质量。这份“Android开发技巧和用例总结”涵盖了多个方面,旨在...通过学习和实践这些知识,开发者能够更好地应对各种Android开发挑战。

Global site tag (gtag.js) - Google Analytics