TYUT太原理工移动应用开发技术重点

有什么问题可以在评论区交流,欢迎指出问题!

(考完了,大题基本上就这些)

题型分析 

选择题10道 填空题30道 判断题10道 共50分

选择填空就看Summary吧。

程序填空题20分(应该是四道) 和程序片段题30分

老师说过的重点

老师说大题主要是Java代码,就不用看XML了,按教材上的来。

Listener的三种实现方式(必考)

这个是老师上课多次强调过的,应该会在程序片段里。考法是给出了三种中的一种,然后让你改写为其他的一种。

一、当前类(current class)实现 P169

//1.在class后面加上implements OnClickListener。
public class test extends Activity implements OnClickListener {

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

//2.在class内部重写onClick方法
    @Override
    public void onClick(View v) {
        //3.把题目里onClick里的东西抄过来       
    }
}



//4.需要的话给控件绑定
testButton.setOnClickListener(this);

二、自定义类(named class)实现 P169

首先自定义类

//1.自定义一个Linstener类,implements OnClickListener
class ButtonLinstener implements OnClickListener{
        
//2.重写onClick(View v)
        @Override
        public void onClick(View v) {
       //把题目里onClick实现的方法抄过来
        }
    }
//3.实例化自定义的类,绑定
ButtonLinstener buttonLinstener = new ButtonLinstener();
button.setOnClickListener(buttonLinstener);

实现这个类,给控件绑定。

//实现这个类
ButtonListener buttonListener = new ButtonListener();

//绑定
testButton.setOnClickListener(buttonListener)

三、内部匿名类(anonymous inner class)实现(重点)P171

有两种方法,我选了比较常用的一种方法。

testButton.setOnClickListener(new OnClickListener(){
     @override
     public void onClick(View v){
     //题目中onClick实现的方法
    } 

});

layout

LinearLayout

RelativeLayout

Weight(重要)

weight只要记住名字、基本属性和特殊属性和高级Listener就行,应该不会考多少。

weight的基本属性

这个是xml的内容,稍微看一下。

<weight的名字
            android:id="@+id/priceInput"                //id
            android:layout_width="wrap_content"   //控件的长宽,wrap_content就是适应内容的多少
            android:layout_height="wrap_content"  //match_parent就是和他的父容器一样大
            android:layout_marginStart="20dp"     //weight的位置
            android:layout_marginTop="20dp"       
            />

在Java代码中找到weight

//创建出你想要的weight的对象,通过findById方法就能找到对应的对象
EditText editText = findById(R.id.edit);


//之后你就可以通过set方法来修改weight的属性或者绑定Listener了
editText.setText("OvO");
editText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
       @Override
       public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                return false;
            }
        });
//设置不可见
editText.setVisibility(View.GONE);        

一些控件太简单就不说了,我重点说需要java代码的weight。

EditText P139

顾名思义就是输入框,特殊属性有:

//特殊属性
android:inputType=""
常用的值:text\number\date\time\numberDecimal

CheckBox P141

复选框

//特殊属性
//true默认勾选
android:checked="true"     

CheckBox checkBox = findById(R.id.checkBox)
if(checkBox.isChecked()){
            //被选择后的操作
        }else{
            //没被选择后的操作
        }

Radio Button P142

单选框

//特殊属性
//true默认勾选
android:checked="true"     

RadioButton radioButton1= findById(R.id.radioButton1)
if(radioButton1.isChecked()){
            //被选择后的操作
}
RadioGroup radioGroup = findById(R.id.radioGroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {        
     @Override
     public void onCheckedChanged(RadioGroup group, int checkedId) {
                //checkedId就是被选择的按钮的id
           swith(checkedId);
                case R.id.button1:
                    ... 
                    //需要的东西
                    break; 
                case R.id.button2:
                     ... 
                    //需要的东西
                    break; 
                
        });

Spinner P147 

下拉框,这个比较复杂,需要用一个适配器(adapter)来显示下拉框

Spinner periodSpinner = findViewById(R.id.periodsSpinner);

//创建adapter,第二个参数是string.xml文件里的string-array
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,     
   R.array.period_array, android.R.layout.support_simple_spinner_dropdown_item);

//绑定视图    
adapter.setDropDownViewResource(android.R.layout.support_simple_spinner_dropdown_item);
periodSpinner.setAdapter(adapter);

//绑定listener
periodSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
      @Override
      public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                //position就是选择的第几个框的id
            }

            @Override
            public void onNothingSelected(AdapterView<?> parent) {
                //如果什么都没选的话
            }
        });

//设置选择的id
periodSpinner.setSelection(0);
//获取选择的id
int position = periodSpinner.getSelectedItemPosition();
//获取选择的文本
String selectedText = periodSpinner.getSelectedItem();

SeekBar P149 

拖动框

//特殊属性
//最大能滑到的值
android:max="30"
//默认值
android:progress="15"


SeekBar seekBar = findViewById(R.id.percentSeekbar);


seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {          
      @Override
      //当滑动时
      public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
             //progress就是当前的值
                
            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {

            }

            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {

            }


        });

Activity(重点)

Activity的加载

还需要再AndroidManifest.xml文件中给Activity注册(register)

public class SellingCalculator extends Activity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //初始化界面
        setContentView(R.layout.car_selling_calculator);
    }
}

Activity的生命周期

9788bd24a0cf4c2da955b31db20a9ffe.png


 

Fragment(重点)

Preference是基于fragment的,二者很类似。

Fragment的加载

public class fragment extends Fragment{
public View onCreateView(@NonNull LayoutInflater inflater,
                             ViewGroup container, Bundle savedInstanceState) {

        View view = inflater.inflate(R.layout.fragment_home,container,false);
        return view
}

动态加载Fragment

@override
public void onClick(View view){
    //new一个fragment
    RightFragment fragment = new Fragment();
    FragmentManager fragmentManager = getFragmentManager();
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    transaction.replace(R.id.Right_layout,fragment);
    transaction.commit();
}

Fragment的生命周期(重点)

d9314e2d57664289916f9b35042afefb.png


 Service (重要)

Service本质上也是一种activity,区别是生命周期和没有可视化界面,可以通过intent启动。

Service的创建

public class test extends Service  {

    @Override
    public void onCreate() {
        //创建时候需要的功能
    }

   

//必须实现的方法
    @Override
    public IBinder onBind(Intent intent) {
        return null;
    }

 
}

在Activity中启动停止暂停Service

配合生命周期使用

Intent serviceIntent = new Intent(this,service.class);

startService(serviceIntent);

stopService(serviceIntent);

//这个是自己停止自己
stopSelf();

Service的生命周期

190f961a433e4ba2b290edf6b9ac4849.png


Preference

这个应该会出填空

如何显示(displays Preference)P243

public class fragment extends PreferenceFragment{
public void onCreate(Bundle savedInstancestate){
    ...
    //在里面写
    addPreferencesFromResource(R.xml.preference);
    }
}
public class activity extends Activity{
    public void onCreate(Bundle savedInstancestate){
    ...
    //在里面写
    getFragmentManager().beginTransaction()
            .replace(android.R.id.content,new fragment());
            .commit;
    }
}

如何获取preference的值(get preference)P245

PreferenceManager.setDefaultValues(this,R.xml.preference,false);
private SharedPreference pref = PreferenceManager.getDefaultSharedPreferences(this);
boolean percent = pref.getBoolean("percent",true);

 menu

这个应该会出填空

如何显示菜单(displays menu)P235

@override
public boolen onCreateoptionMenu(Menu menu){
                            //R.menu.后面是menu的xml文件名
    getMenuInflater().inflate(R.menu.test_menu,menu);
    return true;
}

怎样处理菜单选项事件(handles the menu item events)P235

@override
public boolean onOptionsItemSelected(MenuItem item){
            //获取点击的选项的id
    switch(item.getItemId()){
        //R.id.后面的是menu.xml中定义的item的id
        case R.id.menu_a:
            //按题目要求写
        case R.id.menu_b:
            //按题目要求写

        //默认情况下的操作
        default:
            return super.onOptionsItemSelected(item);
    }

}

List view(重点)

list view由三部分组成:listview所在的activity、item.xml、adapter。

adapter P317

ArrayList<RSSItem> items = feed.getAllItems();

ArrayList<HashMap<String,String>> data = new ArrayList<HashMap<String,String>>();
for(RSSitem item :items){
    HashMap<String,String> map = new HashMap<String,String>();
    map.put("data",item.getData);
    map.put("title",item.getTitle);
    data.add(map);
}

int resource = R.layout.listview.item;
String[] from = {"data","title"};
int[] to = {R.id.DataTextView,R.id.TitleTextView};
SimpleAdapter adapter = new SimpleAdapter(this,data,resource,from,to);
ListView itemListView= findById(R.id.listView);
itemListView.setAdapter(adapter);

为ListView绑定Listener  P319

itemListView.setOnItemClickListener(new OnItemClickListener{
    
    @override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            ...    
            //需要处理的东西
            }
    
});

intent(重点)

intent可以在不同的activity中传递数据或打开activity。

存取数据(重要)

Intent intent = new intent(this,需要跳转的activity.class);
//使用键值(key-value)对的方式来存数据,前面的参数是value,后面的是key
intent.putExtra("test",test);


//在另一个activity中
//通过get方法来取值,get后面需要跟值的类型,如Int、String、float
Intent intent =getIntent();
String string = intent.getStringExtra("test");

跳转新的页面(重要)

Intent intent = new intent(this,需要跳转的activity.class);
this.startActivity(intent);

通过URL跳转到浏览器  P323

ACTION_VIEW 启动浏览器

ACTION_CALL启动拨号

ACTION_DIAL会询问用户要不要拨号

//用String存一个URL,创建uri对象
String link = "www.ayakaovo.top"
Uri uri = uri.parse(link);
Intent viewIntent = new Intent(Intent.ACTION_VIEW,uri);
startActivity(viewIntent);

 

欢迎来我的博客玩

 

  • 23
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值