Android开发知识点总结

上传人:卷*** 文档编号:125550612 上传时间:2022-07-27 格式:DOC 页数:43 大小:206.50KB
返回 下载 相关 举报
Android开发知识点总结_第1页
第1页 / 共43页
Android开发知识点总结_第2页
第2页 / 共43页
Android开发知识点总结_第3页
第3页 / 共43页
点击查看更多>>
资源描述
如何获取标题栏和状态栏高度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 : -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; invalidate(); /* */* * 停止滚动 */ public void stopScroll() isStarting = false; invalidate(); Override public void onDraw(Canvas canvas) canvas.drawText(text, temp_view_plus_text_length - step, y, paint); if(!isStarting) return; step += 0.5; if(step temp_view_plus_two_text_length) step = textLength; invalidate(); Override public void onClick(View v) if(isStarting) stopScroll(); else startScroll(); 实现了宽度的判断,文本自动滚动及开始和停止滚动等功能。在UI xml中的配备 如下: 在Activity中的使用措施如下: /启动公示滚动条 autoScrollTextView = (AutoScrollTextView)findViewById(R.id.TextViewNotice); autoScrollTextView.init(getWindowManager(); autoScrollTextView.startScroll();如果想变化跑马灯的文字内容或者文字效果,则在调用完setText措施之后,需要再调用一下init(WindowManager windowManager)措施,重新进行初始化和有关参数的计算。-大概意思是。和?都是用来引用其她已经定义好的资源的。引用的是之前定义好的资源目前项目或者android的framework里。而?则是引用的目前加载的样式文献里。意思就是说你在xml里某行定义了一种资源,在下面某行需要引用这个资源时用?即可-TabHost两种实现方式文章分类:Java编程 第一种:继承TabActivity,从TabActivity中用getTabHost()措施获取TabHost。只要定义具体Tab内容布局就行了. xml布局: Java代码 LinearLayout android:id=+id/widget_layout_red android:layout_
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!