添加蒙版
在選擇好的圖片上添加蒙版使其與其他未選擇的圖片不一樣,在Relativelayout中,位於後添加的控件會把先前的控件給覆蓋,可以利用Relativelayout佈局添加。但在RelativeLayout佈局中,高寬使用matchParent時不會將其充滿,所以就讓蒙版的大小與要覆蓋的控件的右下邊對齊即可。
android:visibility=”invisible”用來表示是否顯示,visible(顯示),invisible(不顯示,但佔有空間),gone(不顯示,也不佔空間)。
就以Grid中的數據信息爲例,需要將activity_gridview_adapter.xml中添加一些改動
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/image_gridview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"/>
<CheckBox
android:id="@+id/checkbox_grid"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:layout_toRightOf="@+id/image_gridview"
android:layout_alignParentTop="true"/>
<TextView
android:id="@+id/text_gridview"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_below="@id/image_gridview"
/>
<ImageView
android:id="@+id/image_grid"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignRight="@id/image_gridview"
android:layout_alignBottom="@id/image_gridview"
android:layout_alignLeft="@+id/image_gridview"
android:background="#504876FF"
android:visibility="invisible"/>
</RelativeLayout>
</LinearLayout>
activity_gridview.xml中不變
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@mipmap/smalldog">
<GridView
android:id="@+id/gridview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:numColumns="3"
></GridView>
</LinearLayout>
Gridview.java
package StudentAdapter;
/**
* Created by Administrator on 2015/8/26.
*/
public class Grideview {
private int img;
private String fruit_name;
private boolean isCheck;
public Grideview( String fruit_name,int img) {
this.img = img;
this.fruit_name = fruit_name;
}
public boolean isCheck() {
return isCheck;
}
public void setIsCheck(boolean isCheck) {
this.isCheck = isCheck;
}
public int getImg() {
return img;
}
public void setImg(int img) {
this.img = img;
}
public String getFruit_name() {
return fruit_name;
}
public void setFruit_name(String fruit_name) {
this.fruit_name = fruit_name;
}
}
GridViewAdapter.java 添加一個Boolean數組來管理是否被選中
package StudentAdapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.GridView;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.administrator.myapplication.R;
import java.util.List;
/**
* Created by Administrator on 2015/8/26.
*/
public class GridViewAdapter extends BaseAdapter{
private List<Grideview> mGrid;
private LayoutInflater inflaterGridView;
private boolean []mangerCheckBox;
public GridViewAdapter( LayoutInflater inflaterGridView,List<Grideview> mGrid) {
this.mGrid = mGrid;
this.inflaterGridView = inflaterGridView;
mangerCheckBox=new boolean[this.mGrid.size()];
}
@Override
public int getCount() {
return mGrid.size();
}
@Override
public Object getItem(int position) {
return position;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
Grideview grideview=mGrid.get(position);
ViewHolder vh=null;
if (convertView==null) {
vh=new ViewHolder();
convertView=inflaterGridView.inflate(R.layout.activity_gridview_adapter,null);;
vh.imageView= (ImageView) convertView.findViewById(R.id.image_gridview);
vh.textview_name= (TextView) convertView.findViewById(R.id.text_gridview);
vh.checkBox= (CheckBox) convertView.findViewById(R.id.checkbox_grid);
vh.imageView_grid= (ImageView) convertView.findViewById(R.id.image_grid);
convertView.setTag(vh);
}else{
vh= (ViewHolder) convertView.getTag();
}
vh.textview_name.setText(grideview.getFruit_name());
vh.imageView.setImageResource(grideview.getImg());
vh.checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
mangerCheckBox[position]=isChecked;
notifyDataSetChanged();
}
});
vh.checkBox.setChecked(mangerCheckBox[position]);
if (mangerCheckBox[position]){
vh.imageView_grid.setVisibility(View.VISIBLE);
}else{
vh.imageView_grid.setVisibility(View.INVISIBLE);
}
return convertView;
}
public void itemSelect(int position) {
mangerCheckBox[position]=!mangerCheckBox[position];
notifyDataSetChanged();
}
GridViewActivity.java
package com.example.administrator.myapplication;
import android.app.Activity;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.GridView;
import java.util.ArrayList;
import java.util.List;
import StudentAdapter.Fruit;
import StudentAdapter.FruitAdapter;
import StudentAdapter.GridViewAdapter;
import StudentAdapter.Grideview;
/**
* Created by Administrator on 2015/8/26.
*/
public class GridViewActivity extends Activity{
private GridView gridView;
private List<Grideview> mGride;
private GridViewAdapter mGridView;
private LayoutInflater inflaterGrideView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_gridview);
gridView= (GridView) findViewById(R.id.gridview);
inflaterGrideView=getLayoutInflater();
setData();
mGridView=new GridViewAdapter(inflaterGrideView,mGride);
gridView.setAdapter(mGridView);
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mGridView.itemSelect(position);
}
});
}
private void setData() {
mGride = new ArrayList<>();
for (int i = 0; i < 10; i++) {
Grideview apple = new Grideview("蘋果", R.mipmap.apple);
Grideview pineapple = new Grideview("菠蘿", R.mipmap.pineapple);
Grideview strawberry = new Grideview("草莓", R.mipmap.strawberry);
Grideview watermelon = new Grideview("西瓜", R.mipmap.fruit_ninja);
mGride.add(apple);
mGride.add(pineapple);
mGride.add(strawberry);
mGride.add(watermelon);
}
}
}
查看Debug
有時候在程序運行會出現錯誤,我們可以通過查看Debug來檢查錯誤並更正,在出錯代碼行的附近一行的左端顯示行數的鼠標左鍵點擊一下,如圖:
然後點擊工具欄裏的運行圖標,如圖:
程序開始運行,選擇圖片
程序會停在設置斷點的地方,並且會出現如圖:
發現了錯誤,更正後,或是沒錯誤繼續運行,點擊左邊的如圖:
程序會繼續運行
Toast
Toast提示信息,顯示時間有限,沒有焦點,不會打斷當前操作,不能與用戶交互,具體步驟:
·1、調用Toast的靜態方法makeText();
·2、添加顯示文本的時長
·3、調用.show()方法
Toast.makeText設置提示信息的內容,Toast.LENGTH_SHORT顯示提示信息現實的時間長短,SHORT是短時間,LONG是長時間
Toast toast = Toast.makeText(getApplicationContext(),"我是一個Toast",Toast.LENGTH_SHORT );
setGravity用來設置提示消息顯示的位置,後兩個參數設置偏離左上角原點的距離
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
有兩種實現過程:
1、
Button button_toast= (Button) findViewById(R.id.button_toast);
button_toast.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_toast:
Toast toast = Toast.makeText(getApplicationContext(),"我是一個Toast",Toast.LENGTH_SHORT );
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
break;
default:break;
}
}
});
2、先在oncreate()中聲明button,找到其ID,在其重寫onclick(),
Button button_toast= (Button) findViewById(R.id.button_toast);
button_toast.setOnClickListener(this);
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_toast:
toast();
break;
default:break;
}
private void toast() {
Toast toast = Toast.makeText(getApplicationContext(),"我是一個Toast",Toast.LENGTH_SHORT );
Spanned spanned= Html.fromHtml("我是<img src=''/>一個<font color='#ff8c00'>Toast</font>", new Html.ImageGetter() {
@Override
public Drawable getDrawable(String source) {
Drawable drawable = getResources().getDrawable(R.mipmap.image_boy);
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
return drawable;
}
}, null);
toast.setText(spanned);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setGravity(Gravity.CENTER_VERTICAL, 0, 0);
toast.show();
}
自定義toast
toast的樣式可以自己定義
創建一個佈局XML
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@mipmap/jie2">
<TextView
android:id="@+id/text_toast_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="自定義的Toast標題"/>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical">
<ImageView
android:id="@+id/image_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/jie6"/>
<TextView
android:id="@+id/text_toast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="自定義的Toast"/>
</LinearLayout>
</LinearLayout>
實現方式與toast一樣
package com.example.administrator.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.text.method.PasswordTransformationMethod;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import StudentAdapter.StudentAdapter;
import StudentAdapter.Student;
/**
* Created by Administrator on 2015/8/24.
*/
public class CheckBoxActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout .activity_checkbox);
Button button_toast_define= (Button) findViewById(R.id.button_toast_define);
button_toast_define.setOnClickListener(this);
}
public void onClick(View v) {
switch(v.getId()){
case R.id.button_toast_define:
toastDefine();
break;
default:break;
}
}
private void toastDefine() {
Toast toastDefine=new Toast(getApplicationContext());
LayoutInflater inflater_toast=getLayoutInflater();
View viewtoast=inflater_toast.inflate(R.layout.activity_toast,null);
TextView texttoast_title= (TextView) viewtoast.findViewById(R.id.text_toast_title);
toastDefine.setDuration(Toast.LENGTH_SHORT);
toastDefine.setView(viewtoast);
toastDefine.show();
}
}
AlertDialog
提示對話框,與Toast不同的是AlertDialog可以有操作,可以進行單選,多選,對應的方法有
setSingleChoiceItems,setMultiChoiceItems,setItems
首先創建builder
AlertDialog.Builder builder=new AlertDialog.Builder(CheckBoxActivity.this);
setIcon用來設置圖片
setTitle設置標題
setMessage設置顯示提示的內容
setNegativeButton,setNeutralButton,setPositiveButton分別對應對話框下的三個選擇按鈕
還有最後創建生成AlertDialog
AlertDialog dialog=builder.create();
dialog.show();
簡單地對話框
package com.example.administrator.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.text.method.PasswordTransformationMethod;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import StudentAdapter.StudentAdapter;
import StudentAdapter.Student;
/**
* Created by Administrator on 2015/8/24.
*/
public class CheckBoxActivity extends Activity implements View.OnClickListener{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout .activity_checkbox);
Button button_alterdialog= (Button) findViewById(R.id.button_alertdialog);
button_alterdialog.setOnClickListener(this);
}
public void onClick(View v) {
switch(v.getId()){
case R.id.button_alertdialog:
AlertDialog();
break;
default:break;
}
}
private void AlertDialog() {
AlertDialog.Builder builder=new AlertDialog.Builder(CheckBoxActivity.this);
builder.setIcon(R.mipmap.jie2).setTitle("我是AlertDialog標題").setMessage("我是AlertDialog內容"
).setNegativeButton("NegativeButton", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "點擊的是Negative", Toast.LENGTH_SHORT).show();
}
}).setNeutralButton("Neutral", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "點擊的是Neutral", Toast.LENGTH_SHORT).show();
}
}).setPositiveButton("Positive", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "點擊的是Positive", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog=builder.create();
dialog.show();
}
}
簡單地選擇並回顯選擇的信息
package com.example.administrator.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.text.method.PasswordTransformationMethod;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import StudentAdapter.StudentAdapter;
import StudentAdapter.Student;
/**
* Created by Administrator on 2015/8/24.
*/
public class CheckBoxActivity extends Activity implements View.OnClickListener{
private String []mDialog={"第一條數據","第二條數據","第三條數據","第四條數據"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout .activity_checkbox);
Button button_alterdialog_select= (Button) findViewById(R.id.button_alertdialog_select);
button_alterdialog_select.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_toast:
toast();
break;
case R.id.button_toast_define:
toastDefine();
break;
case R.id.button_alertdialog:
AlertDialog();
break;
case R.id.button_alertdialog_select:
AlertDialogSelect();
break;
default:break;
}
}
private void AlertDialogSelect() {
AlertDialog.Builder builder_select=new AlertDialog.Builder(CheckBoxActivity.this);
builder_select.setTitle("可選擇的dialog");
builder_select.setItems(mDialog, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(getApplicationContext(), "選擇的是" + which + "個", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog_select=builder_select.create();
builder_select.show();
}
}
可以進行唯一選擇的會先選擇的信息
package com.example.administrator.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.text.method.PasswordTransformationMethod;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import StudentAdapter.StudentAdapter;
import StudentAdapter.Student;
/**
* Created by Administrator on 2015/8/24.
*/
public class CheckBoxActivity extends Activity implements View.OnClickListener{
private Button button_alterdialog_choice;
private String []mSex={"男","女","其他"};
private String sex;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout .activity_checkbox);
button_alterdialog_choice= (Button) findViewById(R.id.button_alertdialog_choice);
button_alterdialog_choice.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_toast:
toast();
break;
case R.id.button_toast_define:
toastDefine();
break;
case R.id.button_alertdialog:
AlertDialog();
break;
case R.id.button_alertdialog_select:
AlertDialogSelect();
break;
case R.id.button_alertdialog_choice:
AlertDialogChoice();
break;
default:break;
}
}
private void AlertDialogChoice() {
AlertDialog.Builder builder_choice=new AlertDialog.Builder(CheckBoxActivity.this);
builder_choice.setSingleChoiceItems(mSex, 0, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
sex = mSex[which];
Toast.makeText(getApplication(), "您的性別是" + mSex[which], Toast.LENGTH_SHORT).show();
}
});
builder_choice.setNeutralButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder_choice.setNegativeButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
button_alterdialog_choice.setText("您的性別是"+sex);
}
});
AlertDialog dialog_choice=builder_choice.create();
dialog_choice.show();
}
}
多選擇回顯選擇的信息
package com.example.administrator.myapplication;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.Html;
import android.text.Spanned;
import android.text.method.PasswordTransformationMethod;
import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import StudentAdapter.StudentAdapter;
import StudentAdapter.Student;
/**
* Created by Administrator on 2015/8/24.
*/
public class CheckBoxActivity extends Activity implements View.OnClickListener{
private Button button_alterdialog_multichoice;
private String []hobits={"旅遊","騎車","登山","下棋","健身","跑步","游泳","打球"};
private boolean []isCheck=new boolean[hobits.length];
private StringBuffer hobit;
button_alterdialog_multichoice= (Button) findViewById(R.id.button_alertdialog_muiltchoice);
button_alterdialog_multichoice.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch(v.getId()){
case R.id.button_alertdialog_muiltchoice:
AlertDialogMultiChoice();
break;
default:break;
}
}
private void AlertDialogMultiChoice() {
AlertDialog.Builder builder_multichoice=new AlertDialog.Builder(CheckBoxActivity.this);
builder_multichoice.setMultiChoiceItems(hobits, isCheck, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
isCheck[which]=isChecked;
}
});
builder_multichoice.setNeutralButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
button_alterdialog_multichoice.setText("AlertDialg_MultiChoice");
}
});
builder_multichoice.setNegativeButton("確定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
hobit=new StringBuffer();
for(int i=0;i<isCheck.length;i++){
if(isCheck[i]){
hobit.append(hobits[i]);
}
}
button_alterdialog_multichoice.setText("你的愛好是"+hobit);
}
});
AlertDialog dialog_multichoice=builder_multichoice.create();
dialog_multichoice.show();
}
}