Это то, чего я достиг до сих пор
Адаптер изображения
public class ImageAdapter extends BaseAdapter {
private Context mContext;
TextView text;
ImageView imageView;
// Constructor
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
// create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(mContext, R.layout.grid_view, null);
RelativeLayout rl = (RelativeLayout) view.findViewById(R.id.relaGrid);
ImageView image = (ImageView) rl.findViewById(R.id.chooseImage);
TextView text = (TextView) rl.findViewById(R.id.chooseText);
image.setImageResource(mThumbIds[position]);
text.setText(mThumbTxt[position]);
Typeface customFont = Typeface.createFromAsset(mContext.getAssets(), "fonts/faruma.ttf");
text.setTypeface(customFont);
return rl;
}
// Keep all Images in array
public Integer[] mThumbIds = {
R.drawable.ic_action_gallery, R.drawable.ic_action_gallery,
R.drawable.ic_action_gallery, R.drawable.ic_action_gallery,
R.drawable.ic_action_gallery, R.drawable.ic_action_gallery,
R.drawable.ic_action_gallery, R.drawable.ic_action_gallery
};
private String[] mThumbTxt = {
"Morning", "Evening", "Test deler", "Hepsi", "Test 2",
"Test 3", "Test 4", "Test 5"
};
}
Просмотр
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/relaGrid"
android:descendantFocusability="blocksDescendants"
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
card_view:cardCornerRadius="5dp"
card_view:cardElevation="6dp"
android:translationZ="5dp"
android:clickable="true"
android:foreground="?android:attr/selectableItemBackground"
card_view:cardUseCompatPadding="true">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:onClick="onCardclick"
android:clickable="true"
android:paddingBottom="10dp">
<ImageView
android:id="@+id/chooseImage"
android:layout_width="match_parent"
android:layout_height="85dp">
</ImageView>
<TextView android:id="@+id/chooseText"
android:layout_height="match_parent"
android:layout_width="match_parent"
android:textSize="18sp"
android:layout_below="@+id/chooseImage"
android:gravity="center"
android:supportsRtl="true"
android:singleLine="true"
android:paddingRight="5dp"
android:paddingLeft="5dp"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever">
</TextView>
</RelativeLayout>
</android.support.v7.widget.CardView>
</RelativeLayout>
Я пытаюсь получить эффект ряби при просмотре карт с помощью запуска прослушивания onclick другое намерение. но когда включен волновой эффект, событие onclick не работает. Я только вижу только волновой эффект. Слушатель Onclick не работает. Как добиться обоих? Пожалуйста, помогите
Full MainActivity
package com.mycompany.alun;
import android.content.*;
import android.database.sqlite.*;
import android.graphics.*;
import android.os.*;
import android.support.v7.app.*;
import android.support.v7.widget.*;
import android.support.v7.widget.SearchView;
import android.util.*;
import android.view.*;
import android.widget.*;
import android.widget.AdapterView.*;
import java.io.*;
import android.support.v7.widget.Toolbar;
import android.app.*;
import android.support.v4.view.*;
public class MainActivity extends AppCompatActivity {
SQLiteDatabase sqLiteDatabase;
DatabaseHelper mDBHelper;
TextView APP_NAME;
SearchView searchView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mDBHelper = new DatabaseHelper(this);
//Check exists database
File database = getApplicationContext().getDatabasePath(DatabaseHelper.DBNAME);
if(false == database.exists()) {
mDBHelper.getReadableDatabase();
//Copy db
if(copyDatabase(this)) {
Toast.makeText(this, "Copy database succes", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(this, "Copy data error", Toast.LENGTH_SHORT).show();
return;
}
}
// Custom title
TextView textCustomTitle = (TextView) findViewById(R.id.appName);
Typeface customFont = Typeface.createFromAsset(this.getAssets(), "fonts/faruma.ttf");
textCustomTitle.setTypeface(customFont);
Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
GridView gridview = (GridView) findViewById(R.id.gridview);
gridview.setAdapter(new ImageAdapter(this));
if (!isTaskRoot()) {
finish();
return;
}
}
public void onCardclick(AdapterView<?> a, View v, int position, long id) {
switch(position)
{
case 0:
Intent newActivity = new Intent(MainActivity.this,ViewDataActivity.class);
startActivity(newActivity);
break;
case 1:
Intent newActivity2 = new Intent(MainActivity.this,MorningActivity.class);
startActivity(newActivity2);
break;
case 2:
Intent new1Activity = new Intent(MainActivity.this,ViewDataActivity.class);
startActivity(new1Activity);
break;
case 3:
Bitmap src = BitmapFactory.decodeResource(getResources(), R.drawable.daily_life); // the original file yourimage.jpg i added in resources
Bitmap dest = Bitmap.createBitmap(src.getWidth(), src.getHeight(), Bitmap.Config.ARGB_8888);
String yourText = "My custom Text adding to Image";
Canvas cs = new Canvas(dest);
Paint tPaint = new Paint();
tPaint.setTextSize(35);
tPaint.setColor(Color.BLUE);
tPaint.setStyle(Paint.Style.FILL);
cs.drawBitmap(src, 0f, 0f, null);
float height = tPaint.measureText("yY");
float width = tPaint.measureText(yourText);
float x_coord = (src.getWidth() - width)/2;
cs.drawText(yourText, x_coord, height+15f, tPaint); // 15f is to put space between top edge and the text, if you want to change it, you can
try {
dest.compress(Bitmap.CompressFormat.JPEG, 100, new FileOutputStream(new File("/sdcard/ImageAfterAddingText.jpg")));
// dest is Bitmap, if you want to preview the final image, you can display it on screen also before saving
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
break;
case 4:
new CustomToast(getApplicationContext(), getApplicationContext().getString(R.string.add_favorites));
break;
case 5:
Intent searchActivity = new Intent(MainActivity.this,SearchActivity.class);
startActivity(searchActivity);
break;
default:
Toast.makeText(MainActivity.this, "Wrong Input", Toast.LENGTH_LONG).show();
}
}
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
getMenuInflater().inflate(R.menu.nav_menu, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
return super.onCreateOptionsMenu(menu);
}
public void getInput(String searchText)
{
Intent in = new Intent(this, SearchActivity.class);
in.putExtra("SEARCH", searchText);
startActivity(in);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_favorites) {
Intent newActivity = new Intent(MainActivity.this,FavoritesActivity.class);
startActivity(newActivity);
}
if (item.getItemId() == R.id.action_search) {
Intent newActivity = new Intent(MainActivity.this,SearchActivity.class);
startActivity(newActivity);
}
return super.onOptionsItemSelected(item);
}
private boolean copyDatabase(Context context) {
try {
InputStream inputStream = context.getAssets().open(DatabaseHelper.DBNAME);
String outFileName = DatabaseHelper.DBLOCATION + DatabaseHelper.DBNAME;
Log.d("ViewDataActivity", "outFileName : "+outFileName);
OutputStream outputStream = new FileOutputStream(outFileName);
byte[]buff = new byte[1024];
int length = 0;
while ((length = inputStream.read(buff)) > 0) {
outputStream.write(buff, 0, length);
}
outputStream.flush();
outputStream.close();
Log.w("ViewDataActivity","DB copied");
return true;
}catch (Exception e) {
e.printStackTrace();
return false;
}
}
}