android知识点.doc_第1页
android知识点.doc_第2页
android知识点.doc_第3页
android知识点.doc_第4页
android知识点.doc_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

如何获取标题栏和状态栏高度1.获取状态栏高度:decorView是window中的最顶层view,可以从window中获取到decorView,然后decorView有个getWindowVisibleDisplayFrame方法可以获取到程序显示的区域,包括标题栏,但不包括状态栏。 于是可以算出状态栏的高度了。Rect frame = new Rect();getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);int statusBarHeight = frame.top;2.获取标题栏高度:getWindow().findViewById(Window.ID_ANDROID_CONTENT)这个方法获取到的view就是程序不包括标题栏的部分,然后就可以知道标题栏的高度了。int contentTop = getWindow().findViewById(Window.ID_ANDROID_CONTENT).getTop();/statusBarHeight是上面所求的状态栏的高度int titleBarHeight = contentTop - statusBarHeight; -让EditTextView 不能输入的方法etNearbySearch.setFilters(new InputFilter new InputFilter() Override public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend) return source.length() 1 ? dest.subSequence(dstart, dend) : ; );-全屏问题,在程序一加载的时候就让它是全屏this.requestWindowFeature(Window.FEATURE_NO_TITLE);this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); AndroidManifest.xml中这样写-设置控件是否显示的属性设置android 属性android:visibility此属性意思是此视图是否显示,例如RelativeLayout中android:visibility=gone其有三个属性:visible显示;invisible显示黑背景条;gone不显示在类中,可以设置其显示与否,setVisibility(View.GONE);不显示setVisibility(View.VISIBLE);显示-为了避免软键盘挡上输入框,可以试试设置或者-设置控件的宽高,用setlayoutparams()方法-做应用时,可能会需要动态改变控件的背景图片,如果仅仅是简单的点击,选中之类的事件,如果靠程序中写监听的代码就显得太麻烦了,在这种情况下,你可以使用selector动态改变控件背景1、在res/drawable目录下建一个handlebackground.xml文件,根据需要,不同的状态下建立不同的item,并对应相应的图片 2、在构造layout是引用这个xmlnormalbackground.png 为你要显示的前景图片pressed_application_background_static.png 为点击时的背景(系统默认为淡黄色)focused_application_background_static.png 为焦点停留时的背景 (系统默认为橙色) -取得androidsdk的版本,并设置动画效果int version = Integer.valueOf(android.os.Build.VERSION.SDK); if (version = 5 ) overridePendingTransition(R.anim.zoomin, R.anim.zoomout); /此为自定义的动画效果,下面两个为系统的两个自定义的动画效果XML文件,存放位置为:res/anim/1,动画进入效果:zoomin.xml 复制代码2,动画退出效果:zoomout.xml -获得控件在屏幕或窗口内的坐标int location = new int2 ;view.getLocationInWindow(location); /获取在当前窗口内的绝对坐标view.getLocationOnScreen(location);/获取在整个屏幕内的绝对坐标location 0-x坐标,location 1-y坐标-控件对齐那点事android:gravity属性是对该view 内容的限定比如一个button 上面的text. 你可以设置该text 在view的靠左,靠右等位置该属性就干了这个android:layout_gravity是用来设置该view相对与起父view 的位置比如一个button 在linearlayout里,你想把该button放在靠左靠右等位置就可以通过该属性设置-几种Menu的使用说明1.Options Menu.通过按下手机上的MENU键,可以打开Options Menu。Options Menu最多只能在屏幕最下面显示6个菜单项,称为Icon Menu.如果添加了多于6个的菜单项,将通过More菜单项显示,这种称为Expanded Menu.当Options Menu第一次被打开时,系统将调用Activity的onCreateOptionsMenu(Menu menu)方法,在这个方法中可以通过配置一个XML文件,或者调用Menu的add()方法来添加你想要的Menu。Menu的add()方法将返回一个MenuItem对象,你用通过这个对象来配置一些其他属性。比如:icon,shortcut,intent。Menu的add()方法很多,要注意的是itemId这个参数,它的唯一性。当选择了一个Options Menu时,会调用onOptionsItemSelected(MenuItem item)方法。如果想修改Options Menu,需要重写onPrepareOptionsMenu()方法。方式一,用add()添加:/* Creates the menu items */ public boolean onCreateOptionsMenu(Menu menu) menu.add(0, MENU_NEW_GAME, 0, New Game); menu.add(0, MENU_QUIT, 0, Quit).setIcon(R.drawable.menu_quit_icon); return true; /* Handles item selections */ public boolean onOptionsItemSelected(MenuItem item) switch (item.getItemId() case MENU_NEW_GAME: newGame(); return true; case MENU_QUIT: quit(); return true; return false; 方式二,通过XML文件添加:在res/menu/下新建options_menu.xml文件:Xml代码 在onCreateOptionsMenu()方法中,我们这样写:Java代码 public boolean onCreateOptionsMenu(Menu menu) MenuInflater inflater = getMenuInflater(); inflater.inflate(R.menu.options_menu, menu); return true; 2.Context Menu.它需要注册到某个View对象上,当长按这个View大概2秒时间,会出现这个Context Menu。为某个View注册Context Menu是用registerForContextMenu(View view)方法来实现。Context Menu在显示前都会调用onCreateContextMenu来生成menu。onContextItemSelected用来处理选中的菜单项。注意:Context Menu不支持icons和shortcut keys.Java代码 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) super.onCreateContextMenu(menu, v, menuInfo); menu.add(0, EDIT_ID, 0, Edit); menu.add(0, DELETE_ID, 0, Delete); public boolean onContextItemSelected(MenuItem item) AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); switch (item.getItemId() case EDIT_ID: editNote(info.id); return true; case DELETE_ID: deleteNote(info.id); return true; default: return super.onContextItemSelected(item); 注册这个Context Menu:registerForContextMenu(getListView(); 这里的 getListView()是ListActivity的方法,它将返回一个ListView.记住任何一个View对象都可以注册一个Context Menu。3.Submenus public boolean onCreateOptionsMenu(Menu menu) boolean result = super.onCreateOptionsMenu(menu); SubMenu fileMenu = menu.addSubMenu(File); SubMenu editMenu = menu.addSubMenu(Edit); fileMenu.add(0,NEW_ID,0,new); fileMenu.add(0,OPEN_ID,0,open); fileMenu.add(0,SAV_ID,0,save); editMenu.add(0,UNDO_ID,0,undo); editMenu.add(0,REDO_ID,0,redo); return result; 4.Menu FeaturesMenu groups 菜单项分组的功能:在用Menu的add()方法时,通过参数groupId的设置可以实现分组。setGroupVisible()用来显示或者隐藏你的菜单组。setGroupEnabled()用来启用或者禁用你的菜单组。setGroupCheckable()用来设置你的菜单项是否可选。 setGroupCheckable()方法有三个参数int group, boolean checkable, boolean exclusive。第一个参数是要设置的组,第二个参数是否可选,第三个参数为true表示单选,false表示多选。Shortcut keys 快捷键:我们还可以设置快捷键。使用setAlphabeticShortcut(char),setNumericShortcut(int),setShortcut(char,int)可以设置字符,数字,组合(字符+数字)键。注意:Context Menu不能添加快捷键。-点击查看活动规则TextView及其子类,当字符内容太长显示不下时可以省略号代替未显示的字符;省略号可以在显示区域的起始,中间,结束位置,或者以跑马灯的方式显示文字(textview的状态为被选中)。其实现只需在xml中对textview的ellipsize属性做相应的设置即可。 android:ellipsize=start 省略号在开头 android:ellipsize=middle 省略号在中间 android:ellipsize=end 省略号在结尾 android:ellipsize=marquee 跑马灯显示-设置RadioButton的前面的图片,可定制的呵呵 RadioButton是可以自己定义button的显示的,我给的例子就不显示button-android listview的分割线可以改变颜色-保持屏幕唤醒状态方法 1: use PowerManager and WakeLockAndroidManifest.xml权限: 程序中的代码: PowerManager pm = (PowerManager) getSystemService(Context.POWER_SERVICE);PowerManager.WakeLock mWakeLock = pm.newWakeLock(PowerManager.SCREEN_DIM_WAKE_LOCK, My Tag);/ in onResume() call mWakeLock.acquire(); ./ in onPause() callmWakeLock.release(); 方法 2: use the window flag FLAG_KEEP_SCREEN_ON把下面的代码加入到程序onCreate方法中:Overrideprotected void onCreate(Bundle icicle) super.onCreate(icicle); / Set keep screen on getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);-提醒用户输入有问题直接上代码Animation animation = AnimationUtils.loadAnimation(this, R.anim.shake); EditText editText = (EditText) findViewById(R.id.edittext); editText.startAnimation(animation); 里面面的fromXDelta,toXDelta是表示x轴方向的移动距离 shake.xml: cycleInterpolator.xml文件:抖动3次 -TextView 动态设置背景色et.setBackgroundResource(R.color.white);-防止ListView滚动的时候背景闪烁,需加上android:cacheColorHint=#00000000如果设置了listview的android:background=drawable/background就要加上android:cacheColorHint=#00000000-通过添加一个id为android:empty的TextView,当ListView里面没有data的时候,就会显示TextView的内容。 需要注意的是,ListView的id,使用的是id/android:list,即系统默认的id,而紧接其后的TextView,使用的id也是系统默认的,即id/android:empty。-自定义控件单行文本跑马灯控件import android.content.Context;import android.graphics.Canvas;import android.graphics.Paint;import android.os.Parcel;import android.os.Parcelable;import android.util.AttributeSet;import android.view.Display;import android.view.View;import android.view.WindowManager;import android.view.View.OnClickListener;import android.widget.TextView;/* */* * TODO 单行文本跑马灯控件* author tianlu* version 1.0* Create At : 2010-2-16 下午09:35:03*/public class AutoScrollTextView extends TextView implements OnClickListener public final static String TAG = AutoScrollTextView.class.getSimpleName(); private float textLength = 0f;/文本长度 private float viewWidth = 0f; private float step = 0f;/文字的横坐标 private float y = 0f;/文字的纵坐标 private float temp_view_plus_text_length = 0.0f;/用于计算的临时变量 private float temp_view_plus_two_text_length = 0.0f;/用于计算的临时变量 public boolean isStarting = false;/是否开始滚动 private Paint paint = null;/绘图样式 private String text = ;/文本内容 public AutoScrollTextView(Context context) super(context); initView(); public AutoScrollTextView(Context context, AttributeSet attrs) super(context, attrs); initView(); public AutoScrollTextView(Context context, AttributeSet attrs, int defStyle) super(context, attrs, defStyle); initView(); /* */* * 初始化控件 */ private void initView() setOnClickListener(this); /* */* * 文本初始化,每次更改文本内容或者文本效果等之后都需要重新初始化一下 */ public void init(WindowManager windowManager) paint = getPaint(); text = getText().toString(); textLength = paint.measureText(text); viewWidth = getWidth(); if(viewWidth = 0) if(windowManager != null) Display display = windowManager.getDefaultDisplay(); viewWidth = display.getWidth(); step = textLength; temp_view_plus_text_length = viewWidth + textLength; temp_view_plus_two_text_length = viewWidth + textLength * 2; y = getTextSize() + getPaddingTop(); Override public Parcelable onSaveInstanceState() Parcelable superState = super.onSaveInstanceState(); SavedState ss = new SavedState(superState); ss.step = step; ss.isStarting = isStarting; return ss; Override public void onRestoreInstanceState(Parcelable state) if (!(state instanceof SavedState) super.onRestoreInstanceState(state); return; SavedState ss = (SavedState)state; super.onRestoreInstanceState(ss.getSuperState(); step = ss.step; isStarting = ss.isStarting; public static class SavedState extends BaseSavedState public boolean isStarting = false; public float step = 0.0f; SavedState(Parcelable superState) super(superState); Override public void writeToParcel(Parcel out, int flags) super.writeToParcel(out, flags); out.writeBooleanArray(new booleanisStarting); out.writeFloat(step); public static final Parcelable.Creator CREATOR = new Parcelable.Creator() public SavedState newArray(int size) return new SavedStatesize; Override public SavedState createFromParcel(Parcel in) return new SavedState(in); ; private SavedState(Parcel in) super(in); boolean b = null; in.readBooleanArray(b); if(b != null & b.length 0) isStarting = b0; step = in.readFloat(); /* */* * 开始滚动 */ public void startScroll() isStarting = true; invalid

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论