《第一行代码》学习记录(一)

第二章

  1. 隐藏标题栏
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    这句话要在setContentView()前调用
    注意:
    继承AppCompatActivity时使用:
    supportRequestWindowFeature(Window.FEATURENOTITLE)
    继承activity时使用:
    requestWindowFeature(Window.FEATURENOTITLE)

  2. 创建菜单Menu,在res文件下创建一个menu的文件夹,然后在里面写xml文件

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

    <item
        android:id="@+id/add_item"
        android:title="Add"/>
    <item
        android:id="@+id/remove_item"
        android:title="Remove"/>

</menu>

然后重写onCreateOptionsMenu()方法

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

在重写菜单点击相应事件

@Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case R.id.add_item:
            Toast.makeText(this, "You clicked Add", Toast.LENGTH_SHORT).show();
            break;
        case R.id.remove_item:
            Toast.makeText(this, "You clicked Remove", Toast.LENGTH_SHORT).show();
            break;
        default:
        }
        return true;
    }

3.销毁一个活动 :finish();
4.安卓打开自带浏览器跳到指定网址

Intent intent = new Intent();        
intent.setAction("android.intent.action.VIEW");    
Uri content_url = Uri.parse(http://www.baidu.com);   
intent.setData(content_url);  
startActivity(intent);

5.打电话

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + number));
startActivity(intent);

6.当用户点击back键执行相关代码要重写onBackPressed()方法

@Override
    public void onBackPressed() {
        Intent intent = new Intent();
        intent.putExtra("data_return", "Hello FirstActivity");
        setResult(RESULT_OK, intent);
        finish();
    }

7.activity是有栈(Task)来管理的,栈是先进后出
8.将activity变成dialog形式修改主题就好

<activity android:name=".DialogActivity" 
          android:theme="@android:style/Theme.Dialog" >
</activity>

9.解决activity被回收数据没有保存,重写onSaveInstanceState()方法

@Override
protected void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    String tempData = "Something you just typed";
    outState.putString("data_key", tempData);
}
//在oncreate方法中
if (savedInstanceState != null) {
            String tempData = savedInstanceState.getString("data_key");
            Log.d(TAG, tempData);
        }

10.activity的启动模式

  • standard模式:默认模式,如果你创建一个activity三次,它会在栈中创建三个这个activity的实例,然后你退出时就要点击三次

  • singleTop:如果发现活动在已经在栈顶了就使用这个实例,否则重新创建。

  • singleTask:检查该栈中有没有这个activity的实例,如果有就直接使用该实例,还会把这个实例上面的其他实例全部清除出栈。

  • singleInstance:会启动一个新的栈来管理活动。可以让其他应用来访问这个栈里面的实例,这是其他三种模式做不到的。

  • 得到栈的id可以用getTaskId()的方法

11.知道当前是哪个activity,写一个baseactivity

//activity的管理类
public class ActivityCollector {

    public static List<Activity> activities = new ArrayList<Activity>();

    public static void addActivity(Activity activity) {
        activities.add(activity);
    }

    public static void removeActivity(Activity activity) {
        activities.remove(activity);
    }

    public static void finishAll() {
        for (Activity activity : activities) {
            if (!activity.isFinishing()) {
                activity.finish();
            }
        }
    }

}
//baseActivity
public class BaseActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("BaseActivity", getClass().getSimpleName());
        ActivityCollector.addActivity(this);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        ActivityCollector.removeActivity(this);
    }

}

12.启动activity的最佳写法
假如从FirstActivity 跳到SecondActivity ,我们可以在SecondActivity中写一个actionStart的方法暴露在外面,然后在 FirstActivity 中调用

//SecondActivity
public static void actionStart(Context context, String data1, String data2) {
        Intent intent = new Intent(context, SecondActivity.class);
        intent.putExtra("param1", data1);
        intent.putExtra("param2", data2);
        context.startActivity(intent);
    }
//FirstActivity 

SecondActivity.actionStart(FirstActivity.this, "data1", "data2");

第三章

  1. EditText:android:maxLines=”2” 最大行数为两行,对了就会上滚

  2. ProgressBar:默认是圆形的,可以改成水平的,max是最大值

android:max="100"
style="?android:attr/progressBarStyleHorizontal"

3.AlertDialog

AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
            builder.setTitle("");
            builder.setMessage("");
            //可以设置view
            builder.setView(new ImageView(MainActivity.this));
            //设置选项
            builder.setSingleChoiceItems(new String[] {"选项1","选项2","选项3","选项4"}, 0, 
                      new DialogInterface.OnClickListener() {

                         public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                         }
                      }
                    );
            builder.setCancelable(false);
            builder.setNegativeButton("", new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub

                }
            });
            builder.setPositiveButton("", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub

                }
            });
            builder.show();

4.ProgressDialog

ProgressDialog progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setTitle("This is ProgressDialog");
            progressDialog.setMessage("Loading...");
            progressDialog.setCancelable(true);
            progressDialog.show();

5.自定义dialog
AlertDialog是Dialog的子类,也可以直接基于Dialog自定义。

String info = cityData.getPointerList().get(position).toString();  
AlertDialog alertDialog = new AlertDialog.Builder(CityActivity.this).create();  
alertDialog.show();  
//自定义布局
Window window = alertDialog.getWindow();  
window.setContentView(R.layout.dialog_main_info);  
TextView tv_title = (TextView) window.findViewById(R.id.tv_dialog_title);  
tv_title.setText("详细信息");  
TextView tv_message = (TextView) window.findViewById(R.id.tv_dialog_message);  
tv_message.setText(info);  

6.TableLayout
android:stretchColumns=”1”表示表格不能完全沾满屏幕就拉升

<TableLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:stretchColumns="1" >

    <TableRow>

        <TextView
            android:layout_height="wrap_content"
            android:text="Account:" />

        <EditText
            android:id="@+id/account"
            android:layout_height="wrap_content"
            android:hint="Input your account" />
    </TableRow>

    <TableRow>

        <TextView
            android:layout_height="wrap_content"
            android:text="Password:" />

        <EditText
            android:id="@+id/password"
            android:layout_height="wrap_content"
            android:inputType="textPassword" />
    </TableRow>

    <TableRow>

        <Button
            android:id="@+id/login"
            android:layout_height="wrap_content"
            android:layout_span="2"
            android:text="Login" />
    </TableRow>

</TableLayout>

7.动态加载布局

//第一个参数是布局文件的id,第二个是给加载好的布局再添加一个父布局,这里的父布局就是自己,所以用this。
LayoutInflater.from(context).inflate(R.layout.title,this);

8.系统屏幕密度:

ldpi:240*320
mdpi:320*480
hdpi:480*800
xhdpi:720*1280
xxhdpi:1080*1920

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值