某某茶叶有限公司欢迎您!
金沙棋牌在线 > 操作系统 > Basic4android 1.8,用 Basic 编写 Android 应用

Basic4android 1.8,用 Basic 编写 Android 应用

时间:2019-12-29 06:38

Basic4android v1.8 发表,该版本包含众多新特色:

图片 1

Android应用开荒中Action bar编写的入门教程,android应用开拓

从Android 3.0初叶除了我们第生机勃勃教学的Fragment外,Action Bar也是叁个重要的剧情,Action Bar首借使用以代替守旧的标题栏,对于Android平板设备来讲显示屏越来越大它的标题使用Action Bar来规划能够显得越多增添的源委,方便操控。

Action Bar首要职能富含:

  1. 突显选项菜单
  2. 提供标签页的切换情势的导航功用,能够切换五个fragment.
  3. 提供下拉的领航条款.
  4. 提供交互作用式活动视图替代选项条目款项
  5. 利用程序的Logo作为重返Home主屏或发展的领航操作。

提醒在你的次序中应用ActionBar供给注意几点,SDK和尾声运转的固件必得是Android 3.0即honeycomb,在androidmanifest.xml文件中的uses-sdk成分中进入android:minSdkVersion 或android:targetSdkVersion,相近

< manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="eoe.android.cwj" 
android:versionCode="1" 
android:versionName="1.0"> 
< uses-sdk android:minSdkVersion="honeycomb" /> 
< application ... > 

< /application> 
< /manifest> 

  就算必要掩饰Action Bar能够在你的Activity的习性中安装大旨风格为NoTitleBar在您的manifest文件中,上边包车型大巴代码在3.0在此以前是隐藏标题,而在3.0过后正是掩饰ActionBar了,代码为:

< activity android:theme="@android:style/Theme.NoTitleBar"> 

后生可畏、增加活动条约 Action Items

  对于移动条款我们可以在下图来看Android 3.0的标题右部分能够改为工具栏,上面包车型客车Save和Delete正是三个Action Items活动条款。

  上面是二个menu的layout构造文件代码

< ?xml version="1.0" encoding="utf-8"?> 
< menu xmlns:android="http://schemas.android.com/apk/res/android"> 
< item android:id="@+id/menu_add" 
android:icon="@drawable/ic_menu_save" 
android:title="@string/menu_save" 
android:showAsAction="ifRoom|withText" /> 
< /menu> 

  而任何代码相近Activity中的Menu,比如

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
switch (item.getItemId()) { 
case android.R.id.home: 
// 当Action Bar的图标被单击时执行下面的Intent 
Intent intent = new Intent(this, Android123.class); 
startActivity(intent); 
break; 
} 
return super.onOptionsItemSelected(item); 
} 

对于ActionBar的创制,能够在您的Activity中重写onStart方法:

@Override 
protected void onStart() { 
super.onStart(); 
ActionBar actionBar = this.getActionBar(); 
actionBar.setDisplayOptions(ActionBar.DISPLAY_HOME_AS_UP, ActionBar.DISPLAY_HOME_AS_UP); 
} 

 调用getActionBar情势在你的Activity的onCreate中时索要专一必须在调用了setContentView之后。

二、增加活动视图 Action View

对于ActionView,大家得以在menu的布局文件使用中来自定义searchview布局,如下:

< item android:id="@+id/menu_search" 
android:title="Search" 
android:icon="@drawable/ic_menu_search" 
android:showAsAction="ifRoom" 
android:actionLayout="@layout/searchview" /> 

 也能够一直内定Android系统中的SearchView控件,那么当时menu"_search的代码要那样写:

< item android:id="@+id/menu_search" 
android:title="Search" 
android:icon="@drawable/ic_menu_search" 
android:showAsAction="ifRoom" 
android:actionViewClass="android.widget.SearchView" /> 

  大家只顾上边的三种方法中贰脾天性是actionLayout制订四个layout xml布局文件,二个是actionViewClass钦定叁个类,最后调用能够在Activity中响应onCreateOptionsMenu方法映射那几个menu布局就可以.

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
getMenuInflater().inflate(R.menu.options, menu); 
SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView(); 
return super.onCreateOptionsMenu(menu); 
} 

三、加多标签 Tabs

  在ActionBar中落实标签页能够完毕android.app.ActionBar.TabListener ,重写onTabSelected、onTabUnselected和onTabReselected方法来波及Fragment。代码如下:

private class MyTabListener implements ActionBar.TabListener { 
 private TabContentFragment mFragment; 
 public TabListener(TabContentFragment fragment) { 
 mFragment = fragment; 
 } @Override 
 public void onTabSelected(Tab tab, FragmentTransaction ft) { 
 ft.add(R.id.fragment_content, mFragment, null); 
 } 
 @Override 
 public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
 ft.remove(mFragment); 
 } 
 @Override 
 public void onTabReselected(Tab tab, FragmentTransaction ft) { 
 } 

} 

接下去我们成立ActionBar在Activity中,代码如下;

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
final ActionBar actionBar = getActionBar(); //提示getActionBar方法一定在setContentView后面 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
actionBar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); 
Fragment artistsFragment = new ArtistsFragment(); 
actionBar.addTab(actionBar.newTab().setText(R.string.tab_artists).setTabListener(new TabListener(artistsFragment))); 
Fragment albumsFragment = new AlbumsFragment(); 
actionBar.addTab(actionBar.newTab().setText(R.string.tab_albums).setTabListener(new TabListener(albumsFragment))); 
}

四、增添下拉领航 Drop-down Navigation:

成立七个SpinnerAdapter提供下拉选用,和Tab格局各异的是Drop-down只要求改正下setNavigationMode的格局,将ActionBar.NAVIGATION_MODE_TABS改为ActionBar.NAVIGATION_MODE_LIST,最终修正后的代码为

ActionBar actionBar = getActionBar(); 
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST); 
actionBar.setListNavigationCallbacks(mSpinnerAdapter, mNavigationCallback); 

地方大家通过setListNavigationCallbacks方法绑定贰个SpinnerAdapter控件,具体的OnNavigationListener代码示例为;

mOnNavigationListener = new OnNavigationListener() { 
 String[] strings = getResources().getStringArray(R.array.action_list); 
 @Override 
 public boolean onNavigationItemSelected(int position, long itemId) { 
 ListContentFragment newFragment = new ListContentFragment(); 
 FragmentTransaction ft = openFragmentTransaction(); 
 ft.replace(R.id.fragment_container, newFragment, strings[position]); 
 ft.commit(); 
 return true; 
} 

}; 

而在那之中的ListContentFragment的代码为:

public class ListContentFragment extends Fragment { 
private String mText; 

@Override 
public void onAttach(Activity activity) { 
super.onAttach(activity); 
mText = getTag(); 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) { 
TextView text = new TextView(getActivity()); 
text.setText(mText); 
return text; 
} 
} 

五、完毕切换Tabs标签;   
Activity代码:  

public class ActionBarTabs extends Activity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.action_bar_tabs); 
} 

public void onAddTab(View v) { 
final ActionBar bar = getActionBar(); 
final int tabCount = bar.getTabCount(); 
final String text = "Tab " + tabCount; 

bar.addTab(bar.newTab().setText(text) 
.setTabListener(new TabListener(new TabContentFragment(text)))); 
} 

public void onRemoveTab(View v) { 
final ActionBar bar = getActionBar(); 
bar.removeTabAt(bar.getTabCount() - 1); 
} 

public void onToggleTabs(View v) { 
final ActionBar bar = getActionBar(); 

if (bar.getNavigationMode() == ActionBar.NAVIGATION_MODE_TABS) { 
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD); 

bar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE, ActionBar.DISPLAY_SHOW_TITLE); 
} else { 
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS); 
bar.setDisplayOptions(0, ActionBar.DISPLAY_SHOW_TITLE); 
} 
} 

public void onRemoveAllTabs(View v) { 
getActionBar().removeAllTabs(); 
} 

private class TabListener implements ActionBar.TabListener { 
private TabContentFragment mFragment; 
public TabListener(TabContentFragment fragment) { 

mFragment = fragment; 
} 

public void onTabSelected(Tab tab, FragmentTransaction ft) { 
ft.add(R.id.fragment_content, mFragment, mFragment.getText()); 
} 


public void onTabUnselected(Tab tab, FragmentTransaction ft) { 
ft.remove(mFragment); 
} 

public void onTabReselected(Tab tab, FragmentTransaction ft) { 
Toast.makeText(ActionBarTabs.this, "Reselected!", Toast.LENGTH_SHORT).show(); 
} 

} 

private class TabContentFragment extends Fragment { 
private String mText; 
public TabContentFragment(String text) { 
mText = text; 
} 

public String getText() { 
return mText; 
} 
   
@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
Bundle savedInstanceState) { 
View fragView = inflater.inflate(R.layout.action_bar_tab_content, container, false); 
TextView text = (TextView) fragView.findViewById(R.id.text); 
text.setText(mText); 
return fragView; 
} 
} 
} 

涉及的构造文件action_bar_tabs.xml代码为:

< ?xml version="1.0" encoding="utf-8"?> 
< LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 

android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:orientation="vertical"> 

< FrameLayout android:id="@+id/fragment_content" 
android:layout_width="match_parent" 
android:layout_height="0dip" 
android:layout_weight="1" /> 

< LinearLayout android:layout_width="match_parent" 
android:layout_height="0dip" 
android:layout_weight="1" 
android:orientation="vertical"> 

< Button android:id="@+id/btn_add_tab" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/btn_add_tab" 
android:onClick="onAddTab" /> 

< Button android:id="@+id/btn_remove_tab" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/btn_remove_tab" 
android:onClick="onRemoveTab" /> 

< Button android:id="@+id/btn_toggle_tabs" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/btn_toggle_tabs" 
android:onClick="onToggleTabs" /> 

< Button android:id="@+id/btn_remove_all_tabs" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="@string/btn_remove_all_tabs" 
android:onClick="onRemoveAllTabs" /> 
< /LinearLayout> 

< /LinearLayout> 

构造文件action_bar_tab_content.xml;

< ?xml version="1.0" encoding="utf-8"?> 
< TextView xmlns:android="http://schemas.android.com/apk/res/android" 

android:id="@+id/text" 
android:layout_width="wrap_content" 
android:layout_height="wrap_content" /> 

图片 2

代码编辑器

最近Android的开___发趋向挺猛,无意中上网看看了二个新玩具:Basic4AndroidBasic的代码开拓界面:控件属性设置分界面:八个很"抽象的"分界面设计器以至在虚构机中实时见到的分界面(设计时就可以以知道卡塔尔(قطر‎附上本人自身写的三个小小的总结器:代码:(由于用了控件数组,就满门用代码设置界面了,张开B4A粘贴代码进去直接运营就能够,再未有其他什么东西了卡塔尔国

您大概感兴趣的篇章:

  • 利落接受Android中ActionBar和ViewPager切换页面
  • Android中ActionBar以至menu的代码设置样式
  • android中开启actionbar的三种办法
  • Android自定义ActionBar实例

bar编写的入门教程,android应用开辟 从Android 3.0发端除了大家注重教学的Fragment外,Action Bar也是八个珍视的从头到尾的经过,Act...

风度翩翩、自动生成零器件旋转后的先后升高零零部件制版套裁灵活性在骨子里加工进度中,平常遇上同三个构件要求按不相同的方向制版,以增进质感的利用率情状。举个例子,图1所示的制版情势势必比图2所示的制版节省材质,而在编制程序序时,假设按图2的章程排版,只须要编二个数控冲程序就可以完结图2的排版方式,而只要按图1的艺术排版,则要编A、B四个数控冲程序本领落成图1的排版情势。

  • Automatic case correction of variables and subs (based on their declaration)
  • Highlighting of undeclared variables
  • Highlighting of global variables
  • "Find all references" tool - F7
  • "Find sub" tool - Ctrl + E
    The above two tool make it much easier to develop and maintain large projects
  • Backward / forward navigation buttons
  • Improved Find/Replace
  • Improved support for multiple monitors
  • Support for custom color schemes: IDE Color Schemes
  • Drag and drop text
SubGlobalsDimLabel1AsLabelDimNum1,Num2AsDoubleDimOperaAsStringDimCmd(17)AsButtonEndSubSubActivity_Create(FirstTimeAsBoolean)DimI,L,T,LFT,TopAsIntDimBDB(3)AsGradientDrawableDimBDB1AsStateListDrawableDimCols(2)AsIntCols(0)=Colors.RGB(96,128,128)Cols(1)=Colors.RGB(32,0,8)BDB(0).Initialize("TOP_BOTTOM",Cols)BDB(0).CornerRadius=12BDB(1).Initialize("BOTTOM_TOP",Cols)BDB(1).CornerRadius=5BDB(2).Initialize("TOP_BOTTOM",Cols)BDB(2).CornerRadius=5BDB1.InitializeBDB1.AddState(BDB1.State_Disabled,BDB(0))BDB1.AddState(BDB1.State_Enabled,BDB(1))BDB1.AddState(BDB1.State_Pressed,BDB(2))label1.Initialize("")label1.Background=BDB(0)Label1.TextSize=36Label1.TextColor=Colors.RGB(255,198,198)activity.AddView(Label1,3,4,315,70)ForI=0To15L=IMod4T=I/4Cmd(I).Initialize("Cmd")Cmd(I).Background=BDB1Cmd(I).TextSize=28Cmd(I).TextColor=Colors.RGB(198,255,255)Activity.AddView(Cmd(I),2+80*L,80+76*T,77,70)SelectICase0,1,2,3,4,5,6,7,8,9:Cmd(I).Text=ICase10:cmd(I).Text="+"Case11:cmd(I).Text="-"Case12:cmd(I).Text="X"Case13:cmd(I).Text="/"Case14:cmd(I).Text="="Case15:cmd(I).Text="Cls"EndSelectNextCmd(I).Initialize("Cmd")cmd(I).Background=BDB1cmd(I).TextSize=34Cmd(I).TextColor=Colors.RGB(255,64,32)Cmd(I).Text="Quit"activity.AddView(Cmd(I),2,383,317,70)EndSubSubCmd_Down()DimStrAsStringDimSendAsButtonSend=SenderStr=Send.textSelectStrCase"+","-","X","/":Num2=Num1Opera=StrStr="0"Num1=0Case"=":SelectOperaCase"":ReturnCase"+":Num2=Num2+Num1Case"-":Num2=Num2-Num1Case"X":Num2=Num2*Num1Case"/":Num2=Num2/Num1EndSelectStr=Num2Case"Cls":Mun1=0Num2=0Opera=""Str="0"Case"Quit":Str="ByeBye!!!"Activity.FinishCaseElse:IfLabel1.Text"0"ThenStr=Label1.TextStrNum1=Str.Replace("Infinity","")EndSelectLabel1.text=StrIfOpera=""ThenStr=Num1ElseStr=Num2""Opera""Num1Activity.Title=StrIfstr.Length15Thenlabel1.TextSize=28Elselabel1.TextSize=38EndSub

图1

图片 3

图2