Android初级学习总结

来源:互联网 发布:java和asp.net的区别 编辑:程序博客网 时间:2024/05/30 04:56




查看ip:cmd-----ipconfig
 ============================================
去掉title: 第一种: requestWindowFeature(Window.FEATURE_NO_TITLE);
            第二种:    mainifests---theme----- <style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar">
 




======================================
shape 形状:res>drawable文件夹>shape


角度<cornes>
设置边框《stroke》
填充色《solid》 




============================
//提示对话框。
Builder aa;
aa=new AlertDialog.Builder(MainActivity.this);
aa.setTitle("确认退出吗");
aa.setMessage("推出就不能接受消息了");
aa.setIcon(R.drawable.ic_launcher);
aa.setPositiveButton("确定", null);
aa.setNegativeButton("取消", null);
aa.create();
aa.show();
//进度条对话框
ProgressDialog dd=new ProgressDialog(MainActivity.this);
dd.setTitle("确认退出吗");
dd.setMessage("真的确认吗");
dd.setIcon(R.drawable.ic_launcher);
dd.show();




====================================================
   也可以写在监听里。
public void add(View v){
 //VISIBLE 表示控件可见
//INVISBLE 表示空间不可见,但仍占用空间
//Gone 表示不仅不可见,而且不占用任何空间
if (pg_1.getVisibility()==View.GONE) {


pg_1.setVisibility(View.VISIBLE);
}else {
pg_1.setVisibility(View.GONE);}
//点击按钮,每点击一下进度条增加10%
int shuzhi=pg_1.getProgress();
pg_1.setMax(100);
shuzhi=shuzhi+10;
pg_1.setProgress(shuzhi);
}


==============================================
          //Toast 的三种方式
Button yi = (Button) findViewById(R.id.yi);
Button er = (Button) findViewById(R.id.er);
Button san = (Button) findViewById(R.id.san);

yi.setOnClickListener(this);
er.setOnClickListener(this);
san.setOnClickListener(this);
 

}


@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.yi:
Toast.makeText(MainActivity.this, "默认吐司", Toast.LENGTH_SHORT).show();
break;
case R.id.er:
Toast toast=Toast.makeText(MainActivity.this, "自定义位置吐司吧", Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER, 0, 0);
toast.show();
break;
case R.id.san:
Toast toast1=Toast.makeText(MainActivity.this, "自定义带图吐司", Toast.LENGTH_SHORT);
LinearLayout li=(LinearLayout) toast1.getView();
ImageView im=new ImageView(MainActivity.this);
im.setBackgroundResource(R.drawable.q);

li.addView(im);
toast1.setView(li);
toast1.show();
break;
}

}


============================================================================
 AlertDialog 提示对话框。设置标题 内容 图片。最多可设置三个按钮


protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

Button aButton=(Button) findViewById(R.id.a);
aButton.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
   Dialog dia=new AlertDialog.Builder(MainActivity.this)
   .setTitle("你好树先生")
   .setMessage("就是你")
   .setIcon(R.drawable.o)
   .setView(new EditText(MainActivity.this))
   .setPositiveButton("确定", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "已确定吐司", Toast.LENGTH_LONG).show();


}
})
   .setNegativeButton("取消", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "不好不好吐司", Toast.LENGTH_LONG).show();


}
})
   .setNeutralButton("中立", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "还可以吐司", Toast.LENGTH_LONG).show();


}
})
   
   .create();
   dia.show();

}


============================================================================
AlertDialog 自定义提示对话框。点击开始按钮进入另一个xml。有  设置号码  编辑框 保存 取消按钮,点击保存吐司


                  (三行代码)!


   Button kaishi;
  Button baocun;
  Button quxiao;
 
  AlertDialog builder ;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_aa);

kaishi=(Button) findViewById(R.id.kaishi);

       kaishi.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub   三行代码!!!
LayoutInflater inflater=getLayoutInflater();
View view=inflater.inflate(R.layout.duihua, null);
builder = new AlertDialog.Builder(AAA.this).setView(view).show();



baocun=(Button) view.findViewById(R.id.baocun);
quxiao=(Button) view.findViewById(R.id.quxiao);

baocun.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {

Toast.makeText(AAA.this, "已保存", Toast.LENGTH_SHORT).show();
builder.dismiss();


}
});


===============================================================


  第七单元 :Activity 四大组件之一




  1.显示启动
               Intent intent=new Intent(First01Activity.this,ThreeActivity.class);
      startActivity(intent);




  2.隐式启动


         <intent-filter>
                <action android:name="threeactivity01" />


                <category android:name="android.intent.category.DEFAULT" />
                <category android:name="threecategory01" /> 
                </intent-filter> 




   按钮监听里写:
        Intent intent=new Intent();
intent.setAction("threeactivity01");
intent.addCategory("threecategory01");
startActivity(intent);


========================================================================================================Intent回传案例。


 接收 startActivityForResult(intent, 30);


onActivityResult();
if (requestCode==30&&resultCode==66) {
String ss=intent.getStringExtra("xxx");
--------
回传: Intent intent=new Intent();
intent.putExtra("xxx", string);
setResult(66, intent);
finish();






==========================================================================================================Bundle传值


Button bt_1=(Button) findViewById(R.id.bt_1);
bt_1.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
Intent  intent=new Intent(MainActivity.this,SecondActivity.class);
//实例化对象并赋值
Student sss=new Student();
sss.setName("李强");
sss.setAge(23);
//实例化bundle 对象
Bundle bundle=new Bundle();
bundle.putSerializable("student", sss);


//讲bundle 对象添加到intent 中
intent.putExtras(bundle);


//开启
startActivity(intent);
}
});


==================================




TextView tv_1=(TextView) findViewById(R.id.tv_1);
   
//获取前一个界面传递过来的值
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
Student student=(Student) bundle.getSerializable("student");
String name=student.getName();
int age=student.getAge();


tv_1.setText("姓名:"+name+"------------"+"年龄"+age);




}
}


================================================================================================




淡入淡出效果:






new CountDownTimer(2000,2000) {

@Override
public void onTick(long millisUntilFinished) {

}

@Override
public void onFinish() {
Intent intent=new Intent(Butu2Activity.this,SecondActivity.class);
startActivity(intent);


                               int ii=Integer.parseInt(android.os.Build.VERSION.SDK);
if (ii>=5) {
Butu2Activity.this.overridePendingTransition(R.anim.one1, R.anim.one2);
}
finish();
}
}.start();





===========================
 进度条提示框:
dialog = new ProgressDialog(Butu2Activity.this);
dialog.setTitle("提示");
dialog.setMessage("正在连接网络,请稍后。。。");
// STYLE_HORIZONTAL 水平样式
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);


进度条:




 <GridView
        android:id="@+id/gv_name"
        android:numColumns="2"
        android:horizontalSpacing="20dp"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:text="@string/hello_world" />


===========================================================================Listview的监听

viewHolder.bt1.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
Intent intent=new Intent(context,XiangqingActivity.class);
intent.putExtra("xiangqing", list.get(position).getName());
context.startActivity(intent);
}
});


convertView.setOnClickListener(new OnClickListener() {


@Override
public void onClick(View v) {
Intent intent=new Intent(context,Liaotian.class);
intent.putExtra("xxx", list.get(position).getName());
context.startActivity(intent);
}
});


=======================================================================================


    initProgress();  跳转页面之前:显示圆形进度条两秒》
   
private void initProgress() {
dialog=new ProgressDialog(Butu2Activity.this);
dialog.setMax(100);
dialog.setCancelable(false);
dialog.setMessage("正在加载...");
dialog.show();
Timer time=new Timer();
time.schedule(new MyTask(), 2000);
}
class MyTask extends TimerTask {


@Override
public void run() {
dialog.dismiss();}}


==================================================================================
          显示进度条。每0.5秒增加10%。增加到100%关闭


    private void initProgress() {
dialog=new ProgressDialog(SecondActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
dialog.setMax(100);
dialog.setMessage("正在读取账本...");
dialog.setCancelable(falus);


Timer time=new Timer();
time.schedule(new MyTask(), 500, 500);
dialog.show();
}
class MyTask extends TimerTask{
               int progress=0;
@Override
public void run() {
if(progress<90){
progress+=10;
dialog.setProgress(progress);
}else{
dialog.dismiss();
}
}
}


==============================================================
               把输入框内容 存储进文件
 SharedPreferences.Editor sp=getSharedPreferences("aaa", MODE_PRIVATE).edit();
sp.putString("name", yonghuming1.getText().toString());
sp.putString("psw", mimaben.getText().toString());
sp.putBoolean("married", false);
       sp.apply();
 读取文件内容。
SharedPreferences p=getSharedPreferences("aaa", MODE_PRIVATE);
String name1=p.getString("name", "");
String psw=p.getString("psw", "");
     




====================================================
  动画的开始:
  Animation an1=AnimationUtils.loadAnimation(MainActivity.this, R.anim.suofang1);
   img1.setAnimation(an1);
  动画的监听:
    an2.setAnimationListener(new AnimationListener()
===========================================================================
  在数据库插入10条数据:
 private void initData() {
   
MySql sql=new MySql(SecondActivity.this, "goods.db", null, 1);
db=sql.getReadableDatabase();
ContentValues values=new ContentValues();
for(int i=0;i<10;i++){
values.put("image", R.drawable.ic_launcher);
values.put("name", "哇哈哈"+i);
values.put("number", "100"+i+"瓶");
db.insert("Goods", null, values);
}
}


 ======================================================================
   建表:
  public void onCreate(SQLiteDatabase db) {
String sql="create table Goods(id integer primary key autoincrement,image integer,name text,number text)";
db.execSQL(sql);
          }


           onUpgrade()
            db.execSQL("drop table if exists biaoge1");


======================================================================
  查询数据库的 内容 加入到list集合。


    private void initQuery() {
    list=new ArrayList<Goods>();

Cursor cursor=db.query("Goods", null, null, null, null, null, null);
while(cursor.moveToNext()){
Goods good=new Goods();
good.setId(cursor.getInt(cursor.getColumnIndex("id")));
good.setImage(cursor.getInt(cursor.getColumnIndex("image")));
good.setName(cursor.getString(cursor.getColumnIndex("name")));
good.setNumber(cursor.getString(cursor.getColumnIndex("number")));

list.add(good);

}


==================================================================




  动画:缩放
  <scale
    android:duration="500"
    android:fromXScale="0.0"
    android:fromYScale="0.0"
    android:pivotX="50%"
    android:pivotY="50%"
    android:toXScale="1.5"
    android:toYScale="1.5"
    
    android:repeatCount="5"
    android:repeatMode="reverse"
   xmlns:android="http://schemas.android.com/apk/res/android">
    


</scale>


===================================================================




  String name = list.get(position).getName();  
db.delete("Goods", "name=?", new String[]{name});


====================================存储数据在文件
public void save(View view) throws IOException{
String name=et1.getText().toString().trim();
FileOutputStream o1=openFileOutput("lilili", MODE_PRIVATE);
OutputStreamWriter out=new OutputStreamWriter(o1);
BufferedWriter writer=new BufferedWriter(out);

writer.write(name);
writer.close();
out.close();
o1.close();  


=========================================
 Toast在中间位置
Toast toast=Toast.makeText(SanActivity.this, "注册界面", Toast.LENGTH_SHORT);
       toast.setGravity(Gravity.CENTER, 0, 0);
       toast.show();


========================================
               长按listview条目 进入商品详情
 android:focusable="false"
 lv.setOnItemLongClickListener(new  OnItemLongClickListener() {
    @Override
public boolean onItemLongClick(AdapterView<?> parent, View view,
int position, long id) {
Intent intent=new Intent(SecondActivity.this, XiangqingActivity.class);
   startActivity(intent);
return true;
}
});


==================================================================
  创建表格:Mysql extends SQLiteOpenHelper


String sql="create table Goods(id integer primary key autoincrement,image integer,name text,number text)";
db.execSQL(sql);




//建数据库,在数据库插入10条数据。SQLiteDatabase db;
    private void initData() {
    MySql sql=new MySql(SecondActivity.this, "goods.db", null, 1);
db=sql.getReadableDatabase();
ContentValues values=new ContentValues();
for(int i=0;i<10;i++){
values.put("image", R.drawable.ic_launcher);
values.put("name", "哇哈哈"+i);
values.put("number", "100"+i+"瓶");
db.insert("Goods", null, values);
}
}
    //查询数据库的 内容 并加入到list集合。
    private void initQuery() {
    list=new ArrayList<Goods>();
Cursor cursor=db.query("Goods", null, null, null, null, null, null);
while(cursor.moveToNext()){
Goods good=new Goods();
good.setId(cursor.getInt(cursor.getColumnIndex("id")));
good.setImage(cursor.getInt(cursor.getColumnIndex("image")));
good.setName(cursor.getString(cursor.getColumnIndex("name")));
good.setNumber(cursor.getString(cursor.getColumnIndex("number")));
list.add(good);}}


================================================================================


  布局中的删除按钮 点击同时删除数据库内容
viewHolder.bt_delete.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
list.remove(position);
notifyDataSetChanged();
//获取集合中的名字。在数据库中删除
String name = list.get(position).getName();  
db.delete("Goods", "name=?", new String[]{name});
}
});








===================================================================
ViewHolder viewHolder;
if (convertView==null) {
viewHolder=new ViewHolder();
convertView=View.inflate(context, R.layout.item, null);
viewHolder.image=(ImageView) convertView.findViewById(R.id.image);
viewHolder.name=(TextView) convertView.findViewById(R.id.tv_name);
convertView.setTag(viewHolder);
           }else {
viewHolder=(ViewHolder) convertView.getTag();
}
Goods good=list.get(position);
viewHolder.image.setBackgroundResource(good.getImage());
viewHolder.name.setText(good.getName());
viewHolder.number.setText(good.getNumber());
return convertView;}
================================================================================




建库
SQLiteDatabase db ;
mysql = new Mysql(MainActivity.this, "sql1.db", null, 1);
mysql.getWritableDatabase();
====================增
db = mysql.getWritableDatabase();
values = new ContentValues();
values.put("name", "wens");
db.insert("biaoge1", null, values);
values.clear();


=============================查
Cursor cursor=db.query("biaoge1", null, null, null, null, null, null);
if (cursor!=null) {  
while(cursor.moveToNext()){
String name=cursor.getString(cursor.getColumnIndex("name"));
     String sex=cursor.getString(cursor.getColumnIndex("sex"));
int age=cursor.getInt(cursor.getColumnIndex("age"));

}   }
cursor.close();
db.close();


==================================删
db.delete("biaoge1", "name=?", new String[]{"文胜ss"});


========================

values=new ContentValues();
values.put("age", 16);
db.update("biaoge1", values, "name=?", new String[]{"李鹏"});
============================================================================================


                                                       //获取json文件的 图片和文字 放在listview 里
public class MainActivity extends Activity {
   ListView lv_name;  
   String path="http://192.168.1.33:8080/jsontext/travel.json";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initView();
initData();
}




private void initData() {
new MyAsyncTask().execute(path);
}
private void initView() {
lv_name=(ListView) findViewById(R.id.lv_name);
}



class MyAsyncTask extends AsyncTask<String, Integer, String>{
     StringBuffer sb=new StringBuffer();
 List<Travel> list=new ArrayList<Travel>();
@Override
protected String doInBackground(String... params) {
           try {
         URL url=new URL(params[0]);
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setReadTimeout(5000);
conn.setConnectTimeout(5000);
conn.connect();
if (conn.getResponseCode()==200) {
InputStream is=conn.getInputStream();
InputStreamReader isr=new InputStreamReader(is);
BufferedReader br=new BufferedReader(isr);
String ss=null;
while((ss=br.readLine())!=null){
sb.append(ss);
}
br.close();
isr.close();
is.close();
conn.disconnect();
}
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
         return sb.toString();
}



@Override
protected void onPostExecute(String result) {
// TODO Auto-generated method stub
super.onPostExecute(result);

try {
JSONObject jo=new JSONObject(result);
JSONArray ja=jo.getJSONArray("travels");
for (int i = 0; i < ja.length(); i++) {
JSONObject jo2=ja.getJSONObject(i);
Travel t=new Travel();
    t.setCity(jo2.getString("city"));
    t.setTitle(jo2.getString("title"));
    t.setTravelurl(jo2.getString("travelurl"));

   list.add(t);   
   

}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

MyAdapter myadapter=new MyAdapter(list,MainActivity.this);
lv_name.setAdapter(myadapter);
}
}


}


==============================================================
权限
    </application>
<uses-permission  android:name="android.permission.READ_CONTACTS"/>
</manifest>
              获取联系人姓名
bt.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
ContentResolver con=getContentResolver();
Cursor cunsor = con.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
if(cunsor!=null){
while(cunsor.moveToNext()){
int nameIndex = cunsor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
);
String name = cunsor.getString(nameIndex);
Log.e("MainActivity", "获取到的联系人姓名为:"+name);
}
}
}
});

=======================================Intent传值================================


   发送:  Intent intent=new Intent(MainActivity.this,Main2Activity.class);
                intent.putExtra("name","小明");
                intent.putExtra("age",11);
                startActivity(intent);




   接收:  String ss = getIntent().getStringExtra("name");
              int ii = getIntent().getIntExtra("age", 0);


           Toast.makeText(this, ss + "\t" + ii, Toast.LENGTH_SHORT).show();






========================================Intent bundle传值===========================================


    //  发送:    Intent intent = new Intent(MainActivity.this, Main2Activity.class);
                Bundle bundle = new Bundle();
                bundle.putString("name", "小明熊爱明");
                bundle.putInt("age", 20);
                intent.putExtra("bundle", bundle);
                startActivity(intent);


    //接收数据。
String ss=getIntent().getBundleExtra("bundle").getString("name");
            int ii=getIntent().getBundleExtra("bundle").getInt("age",0);


        Toast.makeText(this, ss + "\t" + ii, Toast.LENGTH_SHORT).show();


=====================================================================================================
  // 用bundle传对象
Intent  intent=new Intent(MainActivity.this,SecondActivity.class);
//实例化对象并赋值
Student sss=new Student();
sss.setName("李强");
sss.setAge(23);
//实例化bundle 对象
Bundle bundle=new Bundle();
bundle.putSerializable("student", sss);


//讲bundle 对象添加到intent 中
intent.putExtras(bundle);


//开启
startActivity(intent);
==========
//获取前一个界面传递过来的值
Intent intent=getIntent();
Bundle bundle=intent.getExtras();
Student student=(Student) bundle.getSerializable("student");
String name=student.getName();
int age=student.getAge();


tv_1.setText("姓名:"+name+"------------"+"年龄"+age);


=======================================================================补间动画
case R.id.bu1:  //透明
AlphaAnimation a1 = new AlphaAnimation(1.0f, 0.0f);
              a1.setDuration(200);
              a1.setRepeatCount(-1);
              lin.startAnimation(a1);
break;
case R.id.bu2: //中心缩放
ScaleAnimation sc1=new ScaleAnimation(1.0f, 3.0f, 1.0f, 3.0f,Animation.RESTART, 0.5f, Animation.RESTART,0.5f);
            sc1.setDuration(1000);
            sc1.setRepeatCount(-1);
            lin.startAnimation(sc1); 



break;
case R.id.bu3: //中心旋转
RotateAnimation ro=new RotateAnimation(30, 360,Animation.RESTART, 0.5f,Animation.RESTART, 0.5f);
                
              ro.setDuration(1000);
              ro.setRepeatCount(-1);
              lin.startAnimation(ro);
break;
case R.id.bu4: //平移
TranslateAnimation tran = new TranslateAnimation(0, 0, 0, 500);
            tran.setDuration(1000);
            tran.setRepeatCount(-1);
            lin.startAnimation(tran);
break;
case R.id.bu5: //综合  透明alpha + 位移Translate 放到动画集合里
AlphaAnimation anim1 = new AlphaAnimation(1.0f, 0.0f);
               anim1.setDuration(1000);
                  anim1.setRepeatCount(-1);
     TranslateAnimation anim2 = new TranslateAnimation(0, 0, 0, 300);
                    anim2.setDuration(2000);
                    anim2.setRepeatCount(-1);    
    AnimationSet set=new AnimationSet(true);
              set.setDuration(2000);
             set.addAnimation(anim1);
             set.addAnimation(anim2);
         lin.startAnimation(set);    


==========================================================!!在sd卡写入文件,需要加权限




  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>




//1.获取内存卡位置
//2.拼接一个文件路径
File file = Environment.getExternalStorageDirectory();
String path=file.getAbsolutePath()+"/liqiang11.txt";
  //验证
         System.out.println(path+"pppp");
          tView.setText(path);
//创建文件 //判断文件是否存在。不存在就创建
File file2=new File(path);
   if (!file2.exists()) {
try {
file2.createNewFile();
//写字符串
FileOutputStream out=new FileOutputStream(file2);
out.write("nihaonihaonihaonihao".getBytes());
out.flush();
out.close();