安卓基础学习

TextView在xml布局文件中,设置字符android:autoLink="all/phone/Email/web/none"可以用来区分文字中的号码、超链接等
intent或者intent与bundle组合传递数据
intent.putExtra(mag,value)
getIntent().intent.getStringExtra(msg,defaultvalue)
法二:
bundle.putString(msg,v)
intent.putExtras(bundle)
getIntent.getExtras().getString(msg)
TableLayout布局中的一些知识:
TableRow表示每一行,每行的开始标签,layout_span=“2”,同行之间进行合并单元格;layout_column="2"指定位置
stretchColumns="1"表示从第一列开始,自动拉伸单元格,即将剩下的单元格全分为第二列。

TabActivity: 法一:直接在xml布局文件中声明这三个部分
类必须新建一个类来继承TabActivity,并且该类的xml配置文件中必须包含TabHost、TabWidget、FrameLayout三个视图(View),在xml中必须使用统一命名规则“@android:id/tabhost”、“@android:id/tabs”、“@android:id/tabcontent”,其中后面两个标签是前面一个标签的子标签,表示tab页的选项卡,相当于菜单页,表示显示内容的区域.
TabHost tabhost= this.getTabHost();
TabHost.TabSpec tabSpec=mTabHost.newTabSpec(“First”).setIndicator(“First”,res.getDrawable(R.drawable.blue1)).setContent(intent or viewId);tabhost.addTab(tabSpec)

tabhost.addTab(tabhost.new TabSpec(“msg”).setIndicator(CharSequence label, Drawable icon).setContent(viewId)//设置相关属性并绑定视图
法二实现:利用inflate将FrameLayout的布局绑定到root上:
LayoutInflater.from(context).inflate(int resource,ViewGroup root,boolean attachToRoot)//第一个参数加载xml资源文件;若第三个为true,则表示将第二个指定的xml布局资源挂在在root上。

LayoutParams:用于子视图告诉父视图其位置(直接在代码中声明控件):
ViewGroup.LayoutParams params=new ViewGroup.LayoutParams(ViewGroup.LayoutParams.FILL_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT)
其中可以调用:params.setMargins(l,t,right,bottom)
view.setLayoutParams(params))
layout.addView(view)//layout为一个ViewGroup对象,往其增加控件

TableLayout布局中的一些知识:
TableRow表示每一行,每行的开始标签,layout_span=“2”,同行之间进行合并单元格;layout_column="2"指定位置
stretchColumns="1"表示从第一列开始,自动拉伸单元格,即将剩下的单元格全分为第二列。

设置超链接的其他方法:SpannableString
SpannableString ss=new SpannableString(“需要显示的文本内容”);
ss.setSpan(参数1,2,3,4)
//参数一:设置的超链接特效,new URLSpan()/new StyleSpan(Type.BOLD)/new BackgroundColorSpan
参数2:特效开始的位置,从0开始;参数三:表示结束的位置;参数四:特效前后的内容是否也特效显示:Spanned.Span_EXCLUSIVE_INCLUSIVE,前不包括后包括
EditText:
android:imeOptions="";//entre键之后的动作,actionGo/actionSearch/avtionNext/actionDone/actionSend…还需要配合其他的属性,否则会失效

 android:id="@+id/editText"  
android:layout_width="200dp"      
android:layout_height="wrap_content" 
android:imeOptions="actionSearch"
**android:singleLine="true"
android:inputType="text"**

editText.setOnEditorActionListener方法添加相应的监听,因为有些action是需要在代码中添加具体的相关操作的。
ImageButton:
selector为其设置背景颜色图片等,可以选择不同的状态:

<?xml version="1.0" encoding="utf-8"?>
<selector  xmlns:android="http://schemas.android.com/apk/res/android">//命名空间
    <item android:state_pressed="true" android:color="#fghf5800"/> 
    <item android:state_focused="true"   android:color="#ff7900ff"/> 
    <item android:color="#ff027870"/> //默认情况的背景色
</selector>

CheckBox与RadioButton及RadioGroup(节点包含radioButton的节点)分别为复选框,单选框,都可以通过drawable下的selector设置相应的属性。二者都有checked属性。都可以设置setOnCheckedChangeListener监听,二者,前面其中属性:android:button="@drawable/…"
ProgressDialog基本方法:(此时程序失去焦点,直至进度条消失)setButton(char text, new DialogInterface.OnClickListener liser)//设置进度条上的按钮,text为文字,liser为监听事件。
setProgressStyle(ProgressDialog.STYLE_HORIZONTAL/ProgressDialog.STYLE_SPINNER)
Timer:Timer timer= new Timer()
timer.schedule(new TimerTask(){ void run()},long delay, 60601000);//常用形式,TimerTask实现了Runnable接口,则必须重写其方法
ProgressBar进度条,不会使页面失去焦点:
Handler与Message以及多线程,可以实现数据的传递,设置进度条的实数
DatePickerDialog:设置日期对话框,设置OnDateSetListener监听,实现OnDateSet()方法

Calendar ca =Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH)+1;//月份从0开始,需要+1
int day = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog dialog= new DatePickerDialog(context,new OnDateSetListener(){public void OnDateSet{......}},year,month,day);//实现监听及里面的方法
dialog.show();//展示给出来

TimePickerDialog:设置日期对话框,设置OnTimeSetListener监听,实现OnTimeSet()方法

Calendar ca =Calendar.getInstance();
int day = c.get(Calendar.DAY_OF_MONTH);
int  minute= c.get(Calendar.MINUTE);
TimePickerDialog dialog= new TimePickerDialog(context,new OnTimeSetListener(){public void OnTimeSet{......}},day,minute,boolean is24HourView);//实现监听及里面的方法,是否按照24小时制显示
dialog.show();//展示给出来

Toast使用:可以设置其位置、图片,setGravity().

Toast.makeText(context,"    casc ",Toast.LENGTH_SHORT).show();//常规的使用
toast = Toast.makeText(getApplicationContext(),"带图片的Toast",Toast.LENGTH_LONG);
toast.setGravity(Gravity.CENTER, 0, 0);//参数一位置LEFT/TOP/....,参数2、3分别表示在x,y轴方向上的偏移量
LinearLayout toastView = (LinearLayout) toast.getView();
ImageView imageCodeProject = new ImageView(getApplicationContext());//初始化一个imageview
imageCodeProject.setImageResource(R.drawable.icon);//填充图片
 toastView.addView(imageCodeProject, 0);
 toast.show();

Spinner使用:

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.simple_expandable_list_item_1,getData());//参数二,必须为一个textview的布局(xml文件只能是TextView 不能是layout,否则会报错),可以自定义,也可以调用系统自带的;参数三,要显示的数组。

adapter.add(item)/remove(item)/getPosition(item)/getItem(osition)
Gallery简单使用:图片轮播,再写适配器时,getView()返回一个view视图,考虑到图片,初始化一个ImageView,然后将图片设置为其:
iv.setImageResource //设定图片给imageView对象
iv.setScaleType(ImageView.ScaleType.FIT_XY); //重新设定图片的宽高
iv.setLayoutParams(new Gallery.LayoutParam(100,100)); //重新设定Layout的宽高

图片旋转、缩放Matrix使用postScale/postRotate

Bitmap bitmap= BitmapFactory.decodeResource(getResources(),R.drawable.p1)
Matrix matrix=new Matrix()
matrix.postRotate()/matrix.postScale(float,float)//
Bitmap bp= Bitmap.createBitmap(bitmap,0,0,width,height,matrix,true)//重新绘制图片,按照设置
//也可以将新绘制的图片变成drawable:BitmapDrawable bd= new BitmapDrawable(bp)

**matrix.setScale()/setRotate()/setTranslate()//可以直接使用,多个一起使用时,只会给出最后一个的效果。若想多个效果叠加时:使用preScale()与postScale()表示前乘与后乘,则多个效果可以叠加使用。**

AutoCompleteTextView与ArrayAdapter一起结合实现快速填充:
获取所有app的信息

Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
 resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// 通过getPackageManager()的queryIntentActivities方法遍历,得到所有能打开的app的packageName
List<ResolveInfo>  resolveinfoList = getPackageManager().queryIntentActivities(resolveIntent, 0);

常见适配器构造

ArrayAdapter ad= new ArrayAdapter(context,R.layout.simple_expandable_list_item1,list)//参数二为系统的样式,textview
SimpleAdapter ad= new SimpleAdapter (context,data,R.layout.listviewitem,new String[]{  ,   ,   ,  },new int [] { R.id.  ,R.id.  ,R.id.  ,R.id.  ,})//参数3:listview每个item的布局,自定义layout;参数四:为、每个控件对应资源的Key值;参数5:为listview控件的id;

OptionsMenu菜单的使用:添加optionsMenu的两种方法,一种是menu布局:都可以实现onOptionsItemSelected(MenuItem item){ …}

public boolean onCreateOptionsMenu(Menu menu) {
  	MenuItem item = menu.add(Menu.NONE,参数2,参数3,“  ”)//参数1:组标识符,Menu.NONE表示不分组;参数2:item的id(getItemId()用来区别); 参数3:item摆放的位置 ;参数4: 显示的文字
  	 item.setIcon(R.drawable.  )
另一种是直接代码中添加:  public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater mInflater=new MenuInflater(this);
        mInflater.inflate(R.menu.menu, menu);//创建res/menu/myMenu.xml文件
        return super.onCreateOptionsMenu(menu);}

ContextMenu使用:选择某项VIEW后长按menu键,就会显示出来。比如EditeText就可以通过长按来弹出拥有“cut”,“copy”,"paste"等项的,一般使用的方法为:(1)registerForContextMenu(getExpandableListView()); //参数为一个ViewGroup的layout
(2)onCreateContextMenu(ContextMenu menu, View v,ContextMenuInfo menuInfo);//通过参数menu.add( , , , )增加menuitem得到menu
(3)onContextItemSelected(MenuItem item);
SubMenu可以扩充到ContextMenu与OptionsMenu之下,通过addSubMenu()的方法实现。即安卓只支持两层的菜单,子菜单中不支持显示图标,设置弹出框的图标与标题,setHeaderIcon/Title()等方法实现。
AlertDilog一般实现方式:
1、new AlertDialog.Builder
2、可以设置一个array的dialog,通过Bulder.setItems(array,new DialogInterface.OnClickListener(){)
3、可以自定义dialog的布局,dialog.setContenView(R.layout. )

SeekBar拖动条:SeekBar.OnSeekBarChangeListener接口实现监听,需要重写的方法为onProgressChanged()、onStartTrackingTouch()与onStopTrackingTouch()等方法。

Theme主题的使用:
1 在Manifest.xml中进行更改:android:theme="@style/themename"
2 代码中设置,setTheme(R.style.themeName);
屏幕旋转
1 在Manifest.xml文件中设置属性:android:screenOrientation=“landscape/portrait”//横向与纵向
2 在代码中设置监听,必须在Manifest.xml中增加权限的设置,permission.CHANGE_CONFIGURATION,同时增加activity的属性,android:configChanges=“orientation|keyboard”。最后在代码中进行设置监听,public void onConfigurationChanged(Configuration config){…}//其中Configuration.ORIENTATION_PORTRAIT/ORIENTATION_LANDSCAPE表示竖屏/横屏
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE)//利用setRequestedOrientation翻转屏幕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值